2010-10-14 88 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