20

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

そのため、バッチファイルにテキストファイルの内容を読み取らせ、そのテキストファイルの内容に応じてアクションを実行させます。

たとえば、テキストファイルに「HelloWorld」が含まれている場合は、Start 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
4

2 に答える 2

40

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

どちらのコマンドの出力も気にしないので、出力を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をテストすることもできますが、上記の構文を使用することをお勧めします。

于 2012-11-20T15:52:40.473 に答える
2

これも機能する代替アプローチです。コードはfindstrコマンドを使用してテキストファイル内を調べ、特定の文字列を見つけます...エラーレベル0(見つかった場合)またはエラーレベル1(文字列が見つからなかった場合)を返します。

findstr /m "Findme" Log.txt >Nul
if %errorlevel%==0 (
echo "Findme" was found within the Log.txt file!
)

if %errorlevel%==1 (
echo "Findme" wasn't found within the Log.txt file!
)
pause
于 2019-12-07T01:26:46.940 に答える