當在命令列使用命令“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!
)