質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Q&A

解決済

1回答

9784閲覧

バッチ処理についてです。特定の文字列以降の文字列を取得するにはどうしたら良いでしょうか?

mvc_php

総合スコア19

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

0グッド

0クリップ

投稿2021/04/21 04:57

下記のようなアンケート回答が記録された内容の *.txt データが300個程度あります。
同じディレクトリ下でバッチ処理を行い、300個のデータ(data_001.txt ~ data_300.txt)から「回答内容:」の行のみを取得して result.log へ保存したいと思っています。

どのようにしたら思った通りの動作になるでしょうか。
大変恐縮ですがご教授のほど宜しくお願い致します。


▼プレーンテキストの内容(data_001.txt) / エンコード: Shift-JIS

アンケート回答を受け付けました。 受付日時:2021/04/21 10:07:11 回答内容:ワンピース 年齢:20代 お住い:大阪 趣味:ドライブ、映画鑑賞

下記のように「回答内容:」で文字検索を行って result.log へ追記していくようにしましたが、
「年齢」、「お住まい」、「趣味」といった、それ以降の文字列が含まれてしまいます。

for /f "delims=[]" %%A in ('find /n "回答内容:" ^< data_001.txt') do set /a N=%%A-1&goto next :next more +%N% data_001.txt >> result.log

また、格納ディレクトリが「 C:\tmp 」とした場合、すべての *.txt を対象として下記のようにしましたがエラーで result.log へ出力されなくなりました。

for /f "delims=[]" %%A in ('find /n "回答内容:" ^< C:\tmp*.txt') do set /a N=%%A-1&goto next :next more +%N% C:\tmp*.txt >> result.log

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

書かれている文章だけからすると、その行だけ得れば良いので、

CMD

1( 2for %%A in (*.txt) do findstr "回答内容:" < %%A 3)>result.log

で良さそうです。

投稿2021/04/21 05:47

otn

総合スコア84499

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mvc_php

2021/04/21 09:22

早速ご回答いただきまして有難う御座います! 下記のように「回答内容:」の行を取得することができました。 C:\tmp\>findstr "回答内容:" 0<data_001.txt 回答内容:ワンピース @echo off を1行目に追加してスッキリしました。 @echo off ( for %%A in (*.txt) do findstr "回答内容:" < %%A )>result.log findstr を使いますと、とてもシンプルに記述することができるのですね。 結果をファイルに追記していくので >> result.log としなければならないのかと思いましたが、 > result.log でも大丈夫だったのですね。 大変勉強になります。 この度は有難う御座いました。 今後とも宜しくお願い致します。
otn

2021/04/21 14:37

> findstr を使いますと、とてもシンプルに記述することができるのですね。 findでも同じです。 type *.txt 2>NUL | find ""回答内容:" > result.log でいいかも。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問