2012-11-20 24 views
10

私のバッチファイルと同じフォルダにテキストファイルがあります。
テキストファイルに特定のテキストがバッチで含まれているかどうかを確認するにはどうすればよいですか?

私はバッチファイルにテキストファイルの内容を読み込ませ、そのテキストファイルの内容に応じて処理を実行します。

テキストファイルに「Hello World」が含まれている場合、Hello Worldが含まれていない場合はVLC を開始し、次に何かを実行します。

テキストはそれ自身で更新されます。

これまでのバッチコードでは、画面上のテキストファイルからテキストを出力することができます。

@echo off 
for /f "tokens=*" %%a in (log.txt) do call :processline %%a 

pause 
goto :eof 

:processline 
echo line=%* 

goto :eof 

:eof 
+0

私は[この質問]と思う(http://stackoverflow.com/questions/106053/how-can-i-make-a-batch-file-to-act-like-a-simple-grep-using- perl)は、あなたが探しているものを持っています – zbrunson

答えて

24

FINDまたはFINDSTRのいずれかを使用してください。コマンドプロンプトからHELP FINDHELP FINDSTRと入力して、ドキュメントを入手してください。 FINDは非常に簡単で信頼性が高いです。 FINDSTRははるかに強力ですが、気温も同じです。詳細については、What are the undocumented features and limitations of the Windows FINDSTR command?を参照してください。

どちらのコマンドの出力も気にしないので、出力をnulにリダイレクトできます。

両方のコマンドは、文字列が見つかった場合はERRORLEVELを0に、文字列が見つからない場合は1に設定します。 &&||演算子を使用して、文字列が見つかったかどうかによって条件付きでコードを実行できます。

>nul find "Hello World" log.txt && (
    echo "Hello World" was found. 
) || (
    echo "Hello World" was NOT found. 
) 

>nul findstr /c:"Hello World" log.txt && (
    echo "Hello World" was found. 
) || (
    echo "Hello World" was NOT found. 
) 

また、IF文でERRORLEVELをテストすることができますが、私は上記の構文を好みます。

+0

nevermindは@echoを持っています:)ありがとう。 – Mowgli

+0

こんにちは、私はあなたが私を助けることができることを願っています、log.txtの代わりに、私はそれがデータの1つのリンクを持つだけURLを置くことができる方法です。ありがとう – Mowgli

+0

私のために働いていないようです。 (Hello Worldは決して見つかりません) – Cestarian

関連する問題