2010-10-14 5 views
0

Pourquoi ERRORLEVEL se comporte-t-il différemment dans ces deux circonstances?Résultats ERRORLEVEL par lots différents de CMD?

Depuis la ligne de commande:

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

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

C:\>echo %errorlevel% 
9009 

Versus de fichier batch:

@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% 
) 

Résultat:

> a 
1 

Répondre

2

Retirez-vous "@echo off" et voir comment le code est en cours d'exécution. Vous pourriez trouver que le niveau d'erreur dans l'exemple 2 est le résultat du "si défini".

Aussi, essayez ceci:

@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

Merci, j'ai dû manquer le drapeau/i, qui était exactement ce dont j'avais besoin. Je suppose que ma question était vraiment "pourquoi le niveau d'erreur n'a pas changé quand une nouvelle erreur s'est produite?" ce qui n'est pas un problème urgent pour moi. Merci encore! – wes