2009-05-20 15 views

Odpowiedz

26

Użyj %ERRORLEVEL%. Nie podoba Ci się, że pliki wsadowe są jasne i zwięzłe? :)

26

Coś jak:

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

Ważne jest, aby ta bezwzględna następny wiersz pliku wsadowego, aby uniknąć poziom błędu zastąpieniem :)

Należy pamiętać, że w przypadku korzystania z

IF ERRORLEVEL number 

„funkcja” w plikach wsadowych, to znaczy „jeśli poziom błędu jest większa lub równa number” - to nie jest oparte na równości. Zostałem ugryziony przez które przedtem :)

+0

miałem drobny problem z tą odpowiedź ... AFAIK, nie możesz użyć spacji w komendzie set, więc powinno być ustawione exitcode =% ERRORLEVEL%. W każdym razie wprowadzenie tej zmiany zadziałało u mnie. –

+0

@RichardFawcett: Edytowane, dzięki. –

0

Większość zwykłych operacji zewnętrznego polecenia powrotu ERRORLEVEL 0 i to zazwyczaj (ale nie zawsze) oznacza, że ​​nie wystąpił błąd:

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

Raymonda Chen ma dobry wpis na blogu o nazwie ERRORLEVEL is not %ERRORLEVEL%. Warto sprawdzić.

Warto również zauważyć, że polecenie REM, które większość ludzi uważa za komentarz, w rzeczywistości nie jest. Polecenie REM jest poleceniem nop, które zawsze kończy się . Po REM, poziom błędu jest zawsze 0. Więc

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

nigdy nie zawiedzie ...

1

głównie odpowiadając bulgar jest pytanie, ale uzupełniając inne odpowiedzi:

dla% ERRORLEVEL% do pracy musisz mieć włączone rozszerzenia poleceń (jest to ustawienie domyślne).
Na jednej sesji:

cmd /E:on 

lub na stałe w rejestrze

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

więcej szczegółów:

cmd /? 

[]]

Powiązane problemy