2010-10-14 91 views
0

为什么ERRORLEVEL在这两种情况下表现不同?批量ERRORLEVEL结果与CMD不同?

在命令行:

Microsoft Windows XP [Version 5.1.2600] 
(C) Copyright 1985-2001 Microsoft Corp. 

C:\>aescrypt.exe -v 2> NUL 

C:\>echo %errorlevel% 
9009 

对战从批处理文件:

@echo off 

set /P C="> "? 

set or= 
if "%C%"=="a" set or=1 
if "%C%"=="A" set or=1 
if defined or (
    aescrypt.exe -v 2> NUL 
    echo %errorlevel% 
) 

结果:

> a 
1 

回答

2

删除你 “@回响”,看看代码是如何正在执行。您可能会发现示例2中的错误级别是“if defined”的结果。

而且,试试这个:

@echo off
set /P C="> "?
set or=
if /i "%C%"=="a" set or=1
if not defined or goto SKIP
aescrypt.exe -v 2> NUL
echo %errorlevel%
:SKIP

+0

谢谢,我一定错过了/ i标志,这正是我所需要的。我想我的问题真的是“为什么新的错误发生时错误级别不会改变?”这对我来说不是一个紧迫的问题。再次感谢! – wes 2010-10-14 20:25:53