2009-05-20 6 views

Répondre

26

Utilisez %ERRORLEVEL%. N'aimes-tu pas comment les fichiers batch sont clairs et concis? :)

26

Quelque chose comme:

java Foo 
set exitcode=%ERRORLEVEL% 
echo %exitcode% 

Il est important de faire de cette ligne suivante absolue du fichier batch, afin d'éviter le niveau d'erreur étant écrasé :)

Notez que si vous utilisez le

IF ERRORLEVEL number 

« caractéristique » des fichiers par lots, cela signifie que « si le niveau d'erreur est supérieure ou égale à number » - il ne se fonde pas sur l'égalité. J'ai été mordu par ce avant maintenant :)

+0

J'ai eu un léger problème avec cette réponse ... AFAIK, vous ne pouvez pas utiliser d'espace dans la commande set, il doit donc être défini sur exitcode =% ERRORLEVEL%. Quoi qu'il en soit, faire ce changement a fonctionné pour moi. –

+0

@RichardFawcett: Édité, merci. –

0

La plupart des opérations de commande externes habituels retour ERRORLEVEL 0 et ce généralement (mais pas toujours) indique qu'aucune erreur n'a été rencontrée:

c:\> dir 
... 
c:\> echo %ERRORLEVEL% 
19

Raymond Chen a un bon blog intitulé ERRORLEVEL is not %ERRORLEVEL%. Ça vaut le coup de vérifier.

Il convient également de noter que la commande REM, que la plupart des gens considèrent comme des commentaires, ne l'est vraiment pas. La commande REM est une commande nop qui réussit toujours. Après un REM, le niveau d'erreur est toujours 0. Alors

willalwaysfail.bat 
REM unless you insert a comment after it 
if errorlevel 1 goto fail 

ne périra jamais ...

1

répondre à la plupart boulgour question de, mais complétant les autres réponses:

% pour

ERRORLEVEL% pour fonctionner, vous devez avoir les extensions de commande activées dans Windows (c'est la valeur par défaut).
Pour une séance:

cmd /E:on 

ou de façon permanente dans le registre

HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\EnableExtensions = 0x01 

pour plus de détails:

cmd /? 

[]]

Questions connexes