批量ERRORLEVEL结果与CMD不同?

时间:2010-10-14 18:53:15

标签: batch-file errorlevel

为什么ERRORLEVEL在这两种情况下表现不同?

从命令行:

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

1 个答案:

答案 0 :(得分:2)

删除“@echo off”并查看代码的执行方式。您可能会发现示例2中的errorlevel是“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