我想要做一个循环,将通过搜索字符串的指定目录中的一组文本文件。根据是否找到字符串来报告结果。但%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'来避免整个问题。 –