Trong bash "set -e" ở đầu tập lệnh, lệnh bash sẽ thất bại toàn bộ tập lệnh khi lỗi đầu tiên của bất kỳ lệnh nào bên trong.Có một "set -e" cho một tập lệnh batch DOS không?
Làm cách nào để thực hiện tương tự cho tập lệnh batch của Windows?
Trong bash "set -e" ở đầu tập lệnh, lệnh bash sẽ thất bại toàn bộ tập lệnh khi lỗi đầu tiên của bất kỳ lệnh nào bên trong.Có một "set -e" cho một tập lệnh batch DOS không?
Làm cách nào để thực hiện tương tự cho tập lệnh batch của Windows?
Không trực tiếp nhưng bạn có thể thêm thông tin sau vào mỗi dòng có thứ gì đó để thực thi.
|| goto :error
Và sau đó xác định lỗi, dừng tập lệnh.
:error
exit /b %errorlevel%
Giải pháp của Tuim hoạt động nhưng có thể đơn giản hơn.
ERRORLEVEL đã được đặt, do đó không cần GOTO nhãn đặt ERRORLEVEL.
Bạn chỉ có thể sử dụng
yourCommand || exit /b
Lưu ý rằng exit/b sẽ chỉ thoát khỏi chương trình con hiện tại nếu bạn đang ở giữa một CALL. Kịch bản của bạn sẽ phải thoát từng CALL, từng lớp một, cho đến khi nó đến gốc của tập lệnh. Điều đó sẽ tự động diễn ra miễn là bạn cũng đặt thử nghiệm sau mỗi câu lệnh CALL
call :label || exit /b
Có thể buộc một tập lệnh lô phải thoát ngay lập tức từ bất kỳ độ sâu CALL nào. Xem How can I exit a batch file from within a function? để biết thêm thông tin. Hãy chắc chắn đọc cả hai câu trả lời. Câu trả lời được chấp nhận có một vài nhược điểm nghiêm trọng.
Không đẹp như trong bash, nhưng đủ tốt. – mark
+1, nhưng có một giải pháp đơn giản hơn. Xem [câu trả lời của tôi] (http://stackoverflow.com/a/13863374/1012053). – dbenham