我想要做一個循環,將通過搜索字符串的指定目錄中的一組文本文件。根據是否找到字符串來報告結果。但%errorlevel%
總是返回0,計算結果爲0。批處理%errorlevel%在FOR循環中返回0
SETLOCAL enabledelayedexpansion
FOR %%G IN (*.txt) DO (
find /i "My text string" "%%G"
ECHO %date% %time% : errorlevel is %errorlevel% >> %report_dir%\%computername%.txt
IF %errorlevel% EQU 1 (
ECHO %date% %time% : String found >> %report_dir%\%computername%.txt
GOTO:copy_log
)
)
ENDLOCAL
雷蒙德做你的意思是?:
SETLOCAL enabledelayedexpansion
FOR %%G IN (*.txt) DO (
find /i "My text string" "%%G"
IF %errorlevel% (
ECHO %date% %time% : String found >> %report_dir%\%computername%.txt
GOTO:copy_log
)
)
ENDLOCAL
如文檔中提到,您使用感嘆號的延遲擴展和百分比立即擴張的跡象。你仍然在使用'%ERRORLEVEL%',它會立即被擴展。你想延遲,所以你需要'!ERRORLEVEL!'。或者你可以通過說'IF ERRORLEVEL 1'來避免整個問題。 –