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

Удалить вы "@echo от" и посмотреть, как код выполняются. Вы можете обнаружить, что уровень ошибок в примере 2 является результатом «если определено».

Кроме того, попробуйте следующее:

@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

Смежные вопросы