Come ottenere lo stato di uscita di un programma Java nel file batch di Windows
-
23-08-2019 - |
Domanda
Analogamente alla $?
in Linux, c'è un modo per ottenere lo stato di uscita di un programma in un file batch di Windows (.bat
)?
Diciamo per esempio, il programma ha una System.exit(0)
al momento dell'esecuzione di successo, e un System.exit(1)
su un fallimento, come faccio a intercettare questi valori di uscita in un file .bat
?
Soluzione
% ERRORLEVEL% . Non ti piace come i file batch sono chiare e concise? :)
Altri suggerimenti
Qualcosa di simile:
java Foo
set exitcode=%ERRORLEVEL%
echo %exitcode%
E 'importante fare questa riga successiva assoluto del file batch, per evitare il livello di errore in fase di sovrascrittura:)
Si noti che se si utilizza il
IF ERRORLEVEL number
"caratteristica" di file batch, significa "se il livello di errore è maggiore o uguale a number
" - non è basato sulla parità. Sono stato morso da che prima d'ora:)
Raymond Chen ha un post buon blog chiamato ERRORLEVEL non è% ERRORLEVEL% . Vale la pena di verificare.
Anche la pena notare è che il comando REM che la maggior parte della gente pensa come commenti, in realtà non lo sono. Il comando REM è un comando NOP che riesce sempre . Dopo un REM, il livello di errore è sempre 0. Quindi
willalwaysfail.bat
REM unless you insert a comment after it
if errorlevel 1 goto fail
non verrà mai meno ...
principalmente rispondendo bulgar 's questione, ma integrando le altre risposte:
per% ERRORLEVEL% a funzionare è necessario avere la estensioni ai comandi attivata in Windows (è l'impostazione predefinita).
Per una sessione:
cmd /E:on
o permanentemente nel Registro di sistema
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\EnableExtensions = 0x01
Per ulteriori informazioni:
cmd /?
[]]
La maggior parte delle normali operazioni di comando esterno ritorno ERRORLEVEL 0 e questo di solito (ma non sempre) indica che si è verificato nessun errore:
c:\> dir
...
c:\> echo %ERRORLEVEL%