内部命令是能返回ERRORLEVEL的。
嗯...也许正如楼上的大大们所言,那个>重定向可能带来了一些side effect...我不清楚,我做了一下实验...但还没理清头绪,暂不发表过多言论了...
但是要解决你的问题我倒是可以提供个方法:
DIR > test.txt || ECHO > NUL
IF ERRORLEVEL 1 (
ECHO ERRORLEVEL is 1 or greater
) ELSE (
IF ERRORLEVEL 0 ECHO ERRORLEVEL is 0
)
即在前语句失败的情况下做一下ECHO > nul的无用功,发现ERRORLEVEL就能正确传出来了,你试一试。
另外,之所以要把ERRORLEVEL 0的判断放进ELSE段,是因为如果你能通过ERRORLEVEL 1,那么ERRORLEVEL 0当然是会成功的,你原来的写法会把0的那一句也打印出来,估计你也不是想那样子吧?;)