W bash "set -e" na początku skryptu instruuje bash, aby nie wykonał całego skryptu po pierwszej awarii jakiegokolwiek polecenia wewnątrz.Czy istnieje "zestaw -e" dla skryptu wsadowego DOS?
Jak zrobić to samo dla skryptu wsadowego Windows?
W bash "set -e" na początku skryptu instruuje bash, aby nie wykonał całego skryptu po pierwszej awarii jakiegokolwiek polecenia wewnątrz.Czy istnieje "zestaw -e" dla skryptu wsadowego DOS?
Jak zrobić to samo dla skryptu wsadowego Windows?
Nie bezpośrednio, ale można dodać następujące elementy do każdej linii, która ma coś do wykonania.
|| goto :error
A następnie zdefiniuj błąd, który zatrzymuje skrypt.
:error
exit /b %errorlevel%
Rozwiązanie Tuima działa, ale może być jeszcze prostsze.
ERRORLEVEL jest już ustawiony, więc nie ma potrzeby GOTO etykiety, która ustawia ERRORLEVEL.
można po prostu użyć
yourCommand || exit /b
Należy pamiętać, że wyjście/b wyjdzie tylko aktualny podprogram jeśli jesteś w trakcie rozmowy. Twój skrypt będzie musiał wyjść z każdego POŁĄCZENIA, warstwa po warstwie, aż dotrze do katalogu głównego skryptu. Że nastąpi automatycznie tak długo, jak można umieścić również test po każdej instrukcji CALL
call :label || exit /b
Jest możliwe, aby zmusić skrypt wsadowy natychmiast wyjść z każdej głębokości CALL. Aby uzyskać więcej informacji, patrz How can I exit a batch file from within a function?. Pamiętaj, aby przeczytać obie odpowiedzi. Przyjęta odpowiedź ma kilka potencjalnie poważnych wad.
Nie tak ładne jak w bash, ale wystarczająco dobre. – mark
+1, ale istnieje jeszcze prostsze rozwiązanie. Zobacz [moja odpowiedź] (http://stackoverflow.com/a/13863374/1012053). – dbenham