コマンド ラインでコマンド「findstr /b」を使用し、その直後にエラーレベル コードをチェックすると、正常に動作します。バッチ ファイルで同じことを実行すると、エラー コード 0 のみが返されます。
例:
myfile.txt には値「E2B-01-07,5974,3211」が含まれています
findstr /b XXX myfile.txt
echo %errorlevel%
このコードはバッチ ファイルでは誤って 0 を表示しますが、コマンド プロンプトでは正しく 1 を表示します。
答え1
これを括弧ブロック(FORループ、IFブロック)内で実行する場合は、遅延した拡大構造の前に有効にする:
setlocal enabledelayedexpansion
変数名の前後に感嘆符を使用します -!errorlevel!
例えば
@echo off
setlocal enabledelayedexpansion
for %%A in (*.txt) do (
echo File: %%A
findstr /b "E2B-01-07,5974,3211" "%%A"
echo Errorlevel: !errorlevel!
)