• 締切済み

DOS 特定の文字列を含むファイルのみの抽出方法

C直下に2つのテキストファイル「A.txt」「B.txt」が存在するとします。 Aには「Start」、Bには「Second」という文字列が含まれているとします。 これらのテキストを、BATを使って『テキスト内に特定の文字列が含まれているファイル』のみをDOSプロンプト上に表示する方法をご教示願います。 ■想定するコマンド実行結果 ・Start.BATを実行→DOSプロンプトにて「A.txt」のみが表示する。 ・Second.BATを実行→DOSプロンプトにて「B.txt」のみが表示する。 よろしくお願いします。

みんなの回答

回答No.2

以前1Fに聞きに来ていたW1の方ですよね? Windows7でよければ次の通り: Start.BAT pushd c:\ for %%i in (A.txt B.txt) do @findstr /M "Start" %%i pause popd Second.BAT pushd c:\ for %%i in (A.txt B.txt) do @findstr /M "Second" %%i pause popd

回答No.1

>DOS 特定の文 何のDOSでバージョンは? DOSと言う書き方をするなら、DOSの種類と、バージョンを記載しましょう。 MS-DOS IBM DOS Free DOS Dr DOS 等、たくさんの種類があり、それぞれバージョンによって、使い勝手が違ってきます。 (それぞれ通称です。正式名称は自分で検索してください) WindowsのWindows2000以降に搭載されているDOSをさしているなら、「コマンドプロンプト」と呼び方を変えましょう。 本文の内容は、コマンドの操作だけで十分です。 >findstr /? とすれば、ファイルの中身を大文字小文字を区別して、キーワード、単語単位で検索できる、コマンドの使い方の説明がでます。それをよく理解して、試行してください。 例えば、説明文の最後に正規表現の使い方がでます。単語単位で検索するやり方もでます。

azamiiyori
質問者

補足

OSは7なのでコマンドプロンプトです。 findstrというコマンドは知っています。 何度か試行しましたが、想定結果のようにならないので、質問させていただいた次第です。 具体的な構文を提示していただきたいので、ご理解ください。

関連するQ&A

  • DOSバッチファイルへの引き渡し方法

    次のような操作をしたいのですが。 御教示下さい。 操作の流れ テキストファイルに一文字出力する CMD1 > a.txt テキストファイルa.txtには、一文字しかはいらない 1やa など そのa.txt の内容を判断して バッチファイルb.bat内で分岐処理したい   b.bat 内  if 'a.txtの内容' により分岐処理

  • DOSプロンプト:一番速く10万テキストファイルを結合できる方法を教えてください。

    DOSプロンプト:一番速く10万テキストファイルを結合できる方法を教えてください。テキストのファイル名は、000001.txt,000002.txt…となっています。単純にcopy 000001.txt+000002.txt+…とすると文字数オーバー?なのか処理がとまってしまいます。

  • バッチファイルでテキストファイルの文字列を取得したい

    すみません、どなたか教えて下さい。 バッチファイル(test.bat)内で、他のテキストファイル(ok.txt)の文字列を取得したいです。 ok.txtは 20070614 TEST となってます。 この2つの文字列をそれぞれで取得する方法を教えて下さい。 よろしくお願い致します。

  • 2つのファイルを用いた文字列置換(削除)の方法

    こんにちは。 テキストファイルA.txtに、検索したい文字列を1行ずつ入れておき、別のテキストファイルB.txtのうち、A.txtにある文字が含まれている行を削除するという作業をしたいです。 例えば A.txt AAA BBB B.txt hoge hogeAAAhoge hogeBhoge hogeBBBhoge の場合、 hoge hogeBhoge を出力させたいです。 このような処理ができる方法はないでしょうか?(コマンドやプログラム等)

  • DOS:テキスト内の特定行の次行に文字列を追加

    DOSコマンドプログラムでテキストファイル内の特定文字列を含む行の次の行に、指定した文字列を含む行を挿入する方法 Windows7の DOSコマンドプログラムで、下記の"input1.txt" を"output1.txt"に変換したいと思っています。 "input1.txt"内で"Name:"を含む文字列があれば、その行の次の行に、"A1:10.2"という行を挿入するDOSコマンドプログラムをご教授いただけないでしょうか。見つけた文字列行の次の行に挿入する方法というのが、できなくて困っています。 ---input1.txt------ Name: Tanaka B1: H2 C1: 2 Comment: ABC# 61, Seq# M34 Num H: 3 12 37.97 13 105.90 14 203.82 Name: Suzuki B1: H2 C1: 2 Comment: ABC# 58, Seq# M39 Num H: 2 11 37.97 12 105.90 Name: Yamada B1: H2 C1: 2 Comment: ABC# 93, Seq# M397 Num H: 4 2 2.00 12 4.00 13 9.99 14 29.97 --------------- ---output1.txt----- Name: Tanaka A1:10.2 B1: H2 C1: 2 Comment: ABC# 61, Seq# M34 Num H: 3 12 37.97 13 105.90 14 203.82 Name: Suzuki A1:10.2 B1: H2 C1: 2 Comment: ABC# 58, Seq# M39 Num H: 2 11 37.97 12 105.90 Name: Yamada A1:10.2 B1: H2 C1: 2 Comment: ABC# 93, Seq# M397 Num H: 4 2 2.00 12 4.00 13 9.99 14 29.97 -----------------

  • テキストファイルの特定行、特定列に文字を挿入

    テキストファイルがあるとします。 ある特定の行、特定の列に文字を挿入したいです。 又は、あらかじめ、特定の文字を書いておき、 置換により文字を置き換える方法でも良いです。 これを、コマンドを使用し、batファイルで自動的に 実行したいです。 どのような方法があるでしょう?

  • 検索文字列以外のファイル

    テキストファイルの中身を検索して、その文字列以外のファイル名を取りたいのです。具体的には、 【A.txtの中身】 123 abc 【B.txtの中身】 111 abc 【C.txtの中身】 222 abc このようなテキストファイルの中身を検索して、文字列「123 abc」以外が書かれているファイル名(つまり、B.txt、C.txt)を取得したいのですが、findstrやForなどを駆使すれば、できますでしょうか?

  • VB6:テキストファイルから特定の文字列に続く数値を抜き取りたい

    お世話になっております。 Visual Basic 6にて テキストファイルaから特定の文字列に続く数値を 抜き取りたいと思っております。 テキストファイルaのパス: C:\a_file.txt テキストファイルaの内容: トヨタ自動車(株) (東証1部:7203),取引値15:00 4,100,1株配当45.00円 抜き取り後のテキストbの内容: 7203 15:00 4,100 45.00 抜き取り後のテキストファイルbのパス: C:\b_file.txt ”東証1部”の次、”取引値”の次、というように特定の文字列の後に抜き取りたい数値があるので、InStr関数やMid関数を用いればできるのではないかと思い。 以下のようにしてみました。 ---コード:ココカラ Set fs = CreateObject("Scripting.FileSystemObject") Set a = fs.CreateTextFile("C:\a_file.txt", True) Set b = fs.CreateTextFile("C:\b_file.txt", True) data = Mid(a.innerText, InStr(a.innerText, "1株配当") + 5, 7) b.Write (data) ---コード:ココマデ data = Mid(a.innerText。。。の行でエラーが出ます。 エラー内容:(実行時エラー438)オブジェクトはこのプロパティまたはメソッドをサポートしていません このエラーの部分を解決できれば、本問題解決への糸口になるのではと思っております。 すなはち、テキストaから特定文字列”東証1部”の位置検出、文字切り出しをまず解決したいと思っております。 どうぞよろしくお願いいたします。

  • DOSプロンプトでリダイレクションでファイルから入力した文字を表示したい

    標準入力から入力があるプログラムをDOSバッチでテストする為、 入力文字をファイルにしてリダイレクションで入力させています。 入力はされてそれなりに動くのですが、標準出力には入力させている文字列が表示されません。 具体的には、例えばprog.exeというプログラム内で、 printf("Input A =") ; gets(strA) ; printf("Input B =") ; gets(strB) ; となっていて、 入力用のテキストファイル(input.txt)に 1 2 と書込んで、 prog < input.txt とすると、 Input A =Input B= と表示されます。(strA,strBには各々1,2が入っています) テスト結果のログとしてできれば、人が入力する時と同様に Input A = 1 Input B = 2 と表示させたいのですが、何か方法がありますでしょうか? よろしくお願い致します。

  • 文字列抜き出し方法

    こんにちは、 test.batを DOSコマンド?(コマンドプロンプト) でコードを書いているのですが、 下記の文のときに、 "%~1"の2文字目から、最後の文字までを 抜き出したいのですがコマンドがわかりません。 (VBだとMID) どなたかわかりかた、いらっしゃいませんでしょうか。 if "%~1"=="" exit /b echo %1

専門家に質問してみよう