TXT内の指定文字を検索するBATファイル

このQ&Aのポイント
  • バッチファイルを作成して、指定したテキストファイル内の文字列を検索する方法を解説します。
  • バッチファイルに複数のテキストファイルをドロップし、指定した文字列が含まれないファイル名を表示する方法を紹介します。
  • 検索結果をテキストファイルとして出力することもできます。ログファイルの中から問題箇所を自動的に探し出す手法です。
回答を見る
  • ベストアンサー

TXT内の指定文字を検索するBATファイル

タイトルは不完全なのですが、 1.作成したバッチファイルに調べたいテキストファイルを複数ドロップ読み込み 2.ファイルに指定した文字列が含まれない場合そのファイル名を表示する 3.テキストファイルとして出力する。 と言うような動作を行いたいと思っています。一番の問題点が2番です。 ドロップし文字列検索からファイル名表示なら以下で良いと思うのですが、    findstr /M /C:"スペース含む指定文字列" %1 オプション/Mは一致する時に出力なので、含まれない場合は出来ません。 ifコマンドも試して見ましたが理解が出来てない為かどうもよく判りません。 どなたか教えていただけると助かります。 尚、作成目的としては大量にあるログからの問題箇所の発見です。 1つの検査するファイルに付き1つのエラーチェックログが作成されます。 例えばログファイルに"D 0000"の様に全て0であれば問題無いのですが、 "D 0538"の様に0でなくなると異常が出ている事になります。 しかし、大量のテキストファイルを見ていくのは手間ですから、 どこのログファイルが問題か自動的に探して欲しいのです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

FINDSTR を実行した後で ERRORLEVEL によって出力する/出力しないを判定すればいいと思います。 @echo off :LOOP if "%1" == "" goto END findstr /C:"D 0000" "%1">nul if errorlevel 1 echo %1 shift goto LOOP :END pause

m7itaclor2
質問者

お礼

errorlevelを使うのですか!意味はまだ調べてないですけど、 特に問題なく行いたい動作が出来ました。 ありがとうございます。

関連するQ&A

  • コマンド 文字列検索 正規表現について

    すみませんどなたか教えて下さい。 ある処理が失敗するとエラーのlogファイルを出力します。 エラーがないと0バイトのファイルが作成されます。 そのファイルが0バイトの場合、次の処理を実行させるbatファイルを作成中です。 ファイルサイズの取得ができればいいのですが、コマンドで見つけ切れませんでした。 そこで、logファイルをfindftr /cで1文字でもあれば、、、で判断するようにしました。 正規表現を使って試しましたが、文字があってもヒットしません。 どなたかアドバイスをお願いします。 findstr /c:".*" d:\a.txt >nul 2>&1 if errorlevel 1 ( remエラーlogファイルに文字列なし ) else ( rem エラーlogファイルに文字列あり )

  • *.txtファイルの最終行だけ参照して、バッチファイルを作りたい

    *.txtファイルのなかに"test"という文字をfindstrコマンド又はfindコマンドで探して、出力したいのですが、全ての行を参照して出力するのではなくて、最終行だけを参照して出力するといったバッチファイルを作成したいのですが、どうやればいいのでしょうか? どうぞよろしくお願いいたします。

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

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

  • 複数のテキストファイルから全角文字を検索する方法

    お世話になっております。 windows10を使用して、半角文字を使用したテキストファイルを 作成しています。 そのテキストファイルは複数あるのですが、ファイルの一つに全角 文字が紛れ込んでいることがわかりました。 文字は特定の文字ではないので、findstrコマンドで検索することが できません。 その全角文字を検索する方法はありますでしょうか。 以上、よろしくお願いいたします。

  • ファイル内のある文字列以降を置換

    よろしくお願いします。 OS: Windows Server 2003, MS-DOSコマンドによるバッチで、あるテキストファイル内を検索し、 ある文字列を見つけたら別のある文字列に置換する、という ものを検討中です。 findstr と for文を使用して試行錯誤していますが、 なかなかうまい方法にたどり着きません。 以前ここで教えていただいた http://okwave.jp/qa2602345.html を応用してできないか? ということについても考えているのですが、 なかなか難しいです。 具体的に置換したい文字列というのは、 Dirコマンドの結果で出力されるドライブ文字を 例えば すべてD:\ から すべてE:\ へ変更するということです。 どうぞ、アドバイスのほど、宜しくお願い致します。

  • バッチファイルでFINDSTRを使って文字列検索をしたいが、ファイルが

    バッチファイルでFINDSTRを使って文字列検索をしたいが、ファイルが開けない (1)と(2)のバッチファイルを作りました。それぞれ単体で実行すると、エラーは出ません。 (1)と(2)を一緒にした(3)というバッチファイルで実行すると、FINDSTRのところで、 「ファイルを開くことができません」というエラーが出て、途中でとまってしまいます。 エラーを出さずに実行する方法は何かないでしょうか? (A.batは、CドライブにあるWord.exeを実行するだけのバッチファイルです。) どうぞよろしくお願いします。 【(3)の中身】 call A.bat >kekka.txt   ←この1行だけが(1)のバッチファイルの中身です GOTO kensaku GOTO :EOF ::文字列検索 :kensaku SET keyword=作成しました。   ←この行から下が(2)のバッチファイルの中身です FINDSTR %keyword% kensaku.txt > NUL GOTO kekka%ERRORLEVEL% GOTO :EOF :kekka0 REM 文字列あり ECHO %keyword%がありました PAUSE > nul GOTO :EOF :kekka1 REM 文字列なし ECHO %keyword%はありませんでした。 PAUSE > nul GOTO :EOF

  • エクセルファイルから指定列の文字を

    エクセルファイルから指定列の文字を、別のテキストファイルの特定の場所へ順番に差し替えたいです。 【例】 A列の文字→元からあるテキストファイルの内容そのままに、●という特定文字へ、住所1、住所2、住所3・・・ というようにエクセルの列に従って、順番に差し替えてくれる方法ってあるでしょうか? コピペだと大変です(涙) よろしくお願いします。

  • Batファイルで検索文字を指定しブラウザを起動する

    よろしくお願いいたします。 "C:\Program Files\Microsoft\Edge\Application\msedge.exe" 検索したい文字列 "C:\Program Files\Google\Chrome\Application\chrome.exe" 検索したい文字列 上記のように、Batファイルから、検索したい文字を指定し、chromeなどを起動したいと思っております。 立ちあがったら、すぐにその検索結果を見たいですが、思ったようになりません。 何か良い方法があれば、教えていただけますでしょうか?

  • エクセルで文字列をtxtファイルに変換すると""がつく

    テキストファイルを文字列の引用符は「なし」でエクセルの文字列で開き、加工して再びテキストファイルで保存すると、部分的に文字列に引用符("")がついてしまうのですが、この""(ダブルクォーテーション)をつけずにテキストで保存するにはどうしたらよいのでしょうか。

  • ファイルからの文字列を検索

    テキストファイルを読み込み、任意の文字列を探すプログラムを作成しました。 これを改良し、ワイルドカード入力をした場合、*をa~zとA~Zに変えて、それぞれで検索しようとしています。ワイルドカードにはいる文字は1文字です。 「a*」と検索すれば「aa」、「ab」~「az」、「aA」、「aB」~「aZ」と検索し、合致したものを出力したいのです。 回答が欲しいとは思いますが、ヒントや考え方など何でも結構ですので、お力添えをお願いいたします。

専門家に質問してみよう