在C:\ Easy_ERROR中只有3个文件。当只有1个文件时,你可以找到字符串'alexm'
@echo off
@break off
@color 0a
@cls
FOR %%a IN (C:\Easy_ERROR\EIM*.txt) DO (
find /c /i "ALEXM" C:\Easy_ERROR\%%~nxa
IF %errorlevel% EQU 0 ECHO FOUND
)
)
pause
exit
当你运行它时,声明:
IF %errorlevel% EQU 0 ECHO FOUND
总是为所有3个文件写“FOUND”!
它只是我试图做的其他事情的例子。但同样的情况!
答案 0 :(得分:1)
变量在加载时扩展。您的整个FOR结构将作为1行加载...无论它包含多少行。因此%errorlevel%的值不是您期望的运行时值。替换此行
IF %errorlevel% EQU 0 ECHO FOUND
用这个
IF not errorlevel 1 ECHO FOUND
见IF /?
请注意,如果errorlevel不等于或大于1,则指定一个真实条件。因此,如果返回负值,这将不起作用,因为它也小于1。