2015-03-25 80 views
0

在C:\ Easy_ERROR中只有3个文件。当只在一个文件中,你可以找到字符串“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个文件!

它只是一个例子,我试图做的事情。但同样的情况!

回答

1

变量在加载时被扩展。无论其包含多少行,您的整个FOR结构都会加载为1行。因此,%errorlevel%的值不是您期望的运行时值。替换该行

IF %errorlevel% EQU 0 ECHO FOUND 

与此

IF not errorlevel 1 ECHO FOUND 

看/?

注意,这个指定条件为true,如果错误级别不等于或大于1所以,如果为负值被退回,因为它太小于1

+0

作品完美这是行不通的!谢谢 – ALEXM 2015-03-25 11:21:25