為什麼無論是否找到字串,Fndstr 在批次檔中都會傳回錯誤等級程式碼 0?

為什麼無論是否找到字串,Fndstr 在批次檔中都會傳回錯誤等級程式碼 0?

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

相關內容