DOSを使用してファイル内の文字列を検索したい:
例えば
"string" status.txtを見つけます
そして、見つかったら、バッチファイルを実行します。
これを行う最良の方法は何ですか?
@echo off
cls
MD %homedrive%\TEMPBBDVD\
CLS
TIMEOUT /T 1 >NUL
CLS
systeminfo >%homedrive%\TEMPBBDVD\info.txt
cls
timeout /t 3 >nul
cls
find "x64-based PC" %homedrive%\TEMPBBDVD\info.txt >nul
if %errorlevel% equ 1 goto 32bitsok
goto 64bitsok
cls
:commandlineerror
cls
echo error, command failed or you not are using windows OS.
pause >nul
cls
exit
:64bitsok
cls
echo done, system of 64 bits
pause >nul
cls
del /q /f %homedrive%\TEMPBBDVD\info.txt >nul
cls
timeout /t 1 >nul
cls
RD %homedrive%\TEMPBBDVD\ >nul
cls
exit
:32bitsok
cls
echo done, system of 32 bits
pause >nul
cls
del /q /f %homedrive%\TEMPBBDVD\info.txt >nul
cls
timeout /t 1 >nul
cls
RD %homedrive%\TEMPBBDVD\ >nul
cls
exit
バッチファイルで何かを行ってからしばらく経ちましたが、次のように動作すると思います。
find /c "string" file
if %errorlevel% equ 1 goto notfound
echo found
goto done
:notfound
echo notfound
goto done
:done
これは本当に概念実証です。ニーズに合わせてクリーンアップしてください。重要なのは、find
がerrorlevel
にない場合、string
は1
のfile
を返すということです。この場合、notfound
に分岐します。そうでない場合は、found
の場合を処理します。
C:\test>find /c "string" file | find ": 0" 1>nul && echo "execute command here"
2つのコマンドがあります。1つ目は「condition_command」、2つ目は「result_command」です。 「condition_command」が成功したときに「result_command」を実行する必要がある場合(errorlevel = 0):
condition_command && result_command
「condition_command」が失敗したときに「result_command」を実行する必要がある場合:
condition_command || result_command
したがって、「status.txt」ファイルに「string」がある場合に「some_command」を実行する場合:
find "string" status.txt 1>nul && some_command
ファイル "status.txt"に "string"がない場合:
find "string" status.txt 1>nul || some_command
答えが正しいとマークされている場合、それはWindows Dosプロンプトスクリプトであり、これも機能します。
find "string" status.txt >nul && call "my batch file.bat"