2012-12-13 12 views

risposta

5

Non direttamente ma è possibile aggiungere quanto segue ad ogni riga che ha qualcosa da eseguire.

|| goto :error 

E quindi definire l'errore, che arresta lo script.

:error 
exit /b %errorlevel% 
+0

Non bello come in bash, ma abbastanza buono. – mark

+1

+1, ma esiste una soluzione ancora più semplice. Vedi [la mia risposta] (http://stackoverflow.com/a/13863374/1012053). – dbenham

13

La soluzione di Tuim funziona, ma può essere resa ancora più semplice.

ERRORLEVEL è già impostato, quindi non è necessario GOTO un'etichetta che imposta ERRORLEVEL.

Si può semplicemente utilizzare

yourCommand || exit /b 

Si noti che l'uscita/b uscirà solo la subroutine corrente se si è nel bel mezzo di una chiamata. Lo script dovrà uscire da ogni CALL, strato per strato, fino a raggiungere la radice dello script. Che accadrà automaticamente a patto che anche si mette alla prova dopo ogni istruzione CALL

call :label || exit /b 

E 'possibile forzare uno script batch per uscire immediatamente da qualsiasi profondità CALL. Vedi How can I exit a batch file from within a function? per maggiori informazioni. Assicurati di leggere entrambe le risposte. La risposta accettata ha un paio di inconvenienti potenzialmente gravi.

Problemi correlati