【发布时间】:2021-07-12 14:30:51
【问题描述】:
我的要求很简单,我只想扫描当前目录中的所有文件以查找特定字符串,如果找到该字符串,我只想显示“找到字符串”,否则显示“找不到字符串”
@ECHO OFF
for %%f in (C:\Users\aalvoor\Desktop\BatchScript\*) do (
echo File is %%f
find /c "defaultModel" %%f >NUL
if %errorlevel% equ 1 (echo File is notfound) else (echo String is found)
)
但问题是当我没有将它放入 for 循环时它可以工作,但是当我出于某种原因将它放入 for 循环中时,我收到一条消息 String is found which is not true.
【问题讨论】:
-
我建议打开command prompt,运行
if /?并阅读输出帮助,该帮助已在第一页解释了用于评估前运行命令或可执行文件的退出代码的推荐语法。所以使用if errorlevel 1而不是if %errorlevel% equ 1并且代码有效,您不必考虑延迟扩展。另见single line with multiple commands using Windows batch file 和this answer about dynamic variables 的第 4 章。 -
非常感谢大家..如果错误级别有效...而且不必使用延迟变量扩展逻辑,为此苦苦挣扎了一个多星期。实际使用了 Mofo 给出的评论.. 那么如何将其标记为接受的答案?
标签: for-loop batch-file find