In bash "set -e" all'inizio dello script indica a bash di fallire l'intero script al primo errore di qualsiasi comando interno.Esiste un "set -e" per uno script batch DOS?
Come faccio lo stesso per uno script batch di Windows?
In bash "set -e" all'inizio dello script indica a bash di fallire l'intero script al primo errore di qualsiasi comando interno.Esiste un "set -e" per uno script batch DOS?
Come faccio lo stesso per uno script batch di Windows?
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%
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.
Non bello come in bash, ma abbastanza buono. – mark
+1, ma esiste una soluzione ancora più semplice. Vedi [la mia risposta] (http://stackoverflow.com/a/13863374/1012053). – dbenham