Ho un file di finestre batch, con un paio di sub-routine in esso qualcosa di simile:Come terminare un file batch di Windows da una routine chiamata?
call :a
goto :eof
:a
call :b
goto :eof
:b
:: How do I directly exit here from here?
goto :eof
Io corro questo in una finestra cmd su Vista.
Se rilevo un errore da qualche parte nel file batch, voglio che esca con un errore di errore diverso da zero. C'è qualcosa che posso scrivere nella routine: b che farà terminare il file batch in questo modo.
- Ho provato "exit", che chiude l'intera finestra cmd. Non è quello che voglio.
- Ho provato "exit/B 1". Questo ritorna alla routine precedente. Per utilizzare questo schema dopo ogni 'chiamata' dovrei scrivere attentamente 'se errorlevel 1 exit/B 1' dopo ogni singola 'call' per passare l'errore di backup dello stack di chiamate. Preferirei non dover scrivere questa riga dopo ogni chiamata.
Questo articolo è stato interessante, ma non delle alternative si comportano nel modo che voglio. http://www.computerhope.com/exithlp.htm
C'è un altro modo?
Grazie.
Cool, grazie. Questo è il migliore finora. Da questo ho trovato se uso "call: a || goto: eof", quindi il errorlevel verrà propagato di nuovo. Utile se lo specifico errorlevel ha un significato utilizzabile. –
Sì, sembra davvero meglio. Non ci ho pensato. Inoltre, l'aborto ricorsivo che ho delineato non è un'opzione reale, suppongo :) – Joey
Sì, l'interruzione ricorsiva era nuova, ma solo un po 'troppo lontana! :) –