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?

È stato utile?

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%
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top