テキストファイルに特定のテキストが含まれているかどうかを一括で確認するにはどうすればいいですか? 質問する

テキストファイルに特定のテキストが含まれているかどうかを一括で確認するにはどうすればいいですか? 質問する

バッチファイルと同じフォルダーにテキストファイルがあります。

したがって、バッチ ファイルでテキスト ファイルの内容を読み取り、そのテキスト ファイルの内容に応じてアクションを実行する必要があります。

たとえば、テキスト ファイルに「Hello World」が含まれている場合は、VLC を起動し、Hello World が含まれていない場合は別の操作を実行します。

テキストは自動的に更新されます。

これまでの私のバッチ コードは次のとおりです。テキスト ファイルからテキストを画面に出力できます。

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

pause
goto :eof

:processline
echo line=%*

goto :eof

:eof

ベストアンサー1

FIND または FINDSTR のいずれかを使用してください。コマンド プロンプトからHELP FINDと入力しHELP FINDSTRてドキュメントを取得します。FIND は非常にシンプルで信頼性があります。FINDSTR ははるかに強力ですが、不安定です。Windows FINDSTR コマンドの文書化されていない機能と制限は何ですか?詳細については。

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

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

>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 をテストすることもできますが、私は上記の構文を好みます。

おすすめ記事