batch if语句在任何情况下都返回相同的结果

时间:2015-03-25 10:57:41

标签: batch-file

在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”!

它只是我试图做的其他事情的例子。但同样的情况!

1 个答案:

答案 0 :(得分:1)

变量在加载时扩展。您的整个FOR结构将作为1行加载...无论它包含多少行。因此%errorlevel%的值不是您期望的运行时值。替换此行

IF %errorlevel% EQU 0 ECHO FOUND

用这个

IF not errorlevel 1 ECHO FOUND

见IF /?

请注意,如果errorlevel不等于或大于1,则指定一个真实条件。因此,如果返回负值,这将不起作用,因为它也小于1。