FIND "[ERR" "text.csv"は、少なくとも1つ[ERR
が見つかった場合はERRORLEVELを0に設定し、[ERR
見つからなかった場合は1に設定します。ロジックを反転する方法が必要です。
[ERR
見つからない場合、または1
少なくとも1つが見つかった場合は、すぐに0を返すだけの場合は[ERR
、次を使用します。
find "[ERR" "test.csv" >nul && exit /b 1 || exit /b 0
後で返される変数に結果をキャプチャする場合は、次のようにします。
find "[ERR" "test.csv" >nul && set "err=1" || set "err=0"
また
find "[ERR" "test.csv" >nul
set /a "err=!%errorlevel%"
結果を返す準備ができたら
exit /b %err%
以下は、受け入れられたが恥ずかしいほど間違っていた私の元の答えです:-(
論理エラーを指摘してくれたCoreyに感謝します。彼のコメントで述べているように、以下の誤ったコードは、すべての行に[ERR
テキストがある場合にのみエラーを報告します。
FINDは、見つかった場合はERRORLEVELを0に設定し、見つからなかった場合は1に設定します。ロジックを逆にするには、/Vオプションを使用するだけです。
find /v "[ERR" "test.csv" >nul
エラーレベルを示す変数セットがある場合は、EXIT/Bを使用してERRORLEVELを設定できます。
set err=1
exit /b %err%