2012-12-13 9 views

Odpowiedz

5

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% 
+0

Nie tak ładne jak w bash, ale wystarczająco dobre. – mark

+1

+1, ale istnieje jeszcze prostsze rozwiązanie. Zobacz [moja odpowiedź] (http://stackoverflow.com/a/13863374/1012053). – dbenham

13

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.

Powiązane problemy