Analogicznie do $?
w systemie Linux, czy istnieje sposób uzyskania statusu wyjścia programu w pliku wsadowym Windows (.bat
)?
Powiedzmy, że na przykład program ma System.exit(0)
po pomyślnym wykonaniu, a System.exit(1)
po awarii, w jaki sposób przechwycić te wartości wyjściowe w pliku .bat
?Jak uzyskać status wyjścia programu Java w pliku wsadowym Windows
Odpowiedz
Użyj %ERRORLEVEL%. Nie podoba Ci się, że pliki wsadowe są jasne i zwięzłe? :)
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 :)
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%
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 ...
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 /?
[]]
- 1. Jak uzyskać resztę argumentów w pliku wsadowym Windows?
- 2. Jak uzyskać status zakończenia programu java ze skryptu powłoki uniksowej?
- 3. Jak uzyskać wczorajszą datę w pliku wsadowym?
- 4. Jak uzyskać status przesyłania pliku do Flask
- 5. wywołanie klasy java w pliku wsadowym
- 6. Status wyjścia polecenia ping
- 7. Jak uzyskać dwa lub więcej poleceń razem w pliku wsadowym
- 8. Jak ustawić status wyjścia w Groovy Script
- 9. Jak uzyskać dzisiejszą datę w środowisku wsadowym Windows?
- 10. Jak połączyć ciągi w pliku wsadowym systemu Windows dla pętli?
- 11. Jak korzystać z polecenia setx w pliku wsadowym systemu Windows
- 12. Jak przejść drzewo folderów/poddrzew w pliku wsadowym Windows?
- 13. Jak ustawić katalog roboczy polecenia w pliku wsadowym Windows?
- 14. Jak mogę sprawdzić rozmiar pliku w skrypcie wsadowym Windows?
- 15. Jak podzielić łańcuch na spacje w pliku wsadowym Windows?
- 16. Pobierz ostatni argument wiersza poleceń w pliku wsadowym Windows
- 17. Menu w pliku wsadowym
- 18. Uzyskiwanie nazwy pliku bez rozszerzenia w skrypcie wsadowym Windows
- 19. Bash uzyskać status wyjścia polecenia, gdy "set -e" jest aktywny?
- 20. zwrócił niezerowy status wyjścia -9
- 21. Testowanie atrybutu pliku w pliku wsadowym
- 22. Jak uzyskać status drukarki?
- 23. Jak uzyskać status pobierania?
- 24. Czas wydruku w pliku wsadowym (milisekundy)
- 25. Deklarowanie i używanie zmiennej w pliku wsadowym Windows (.BAT)
- 26. Dokładny ciąg znaków Echo w pliku wsadowym Windows?
- 27. Odczytywanie wartości z pliku w skrypcie wsadowym Windows
- 28. Jak uzyskać ścieżkę do uruchomienia programu java
- 29. wymiana String w pliku wsadowym
- 30. Polecenie uśpienia w pliku wsadowym?
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. –
@RichardFawcett: Edytowane, dzięki. –