2010-07-21 13 views
5

Tôi đã có một tập tin thực thi thực hiện một số điều. Nếu một trong số họ thất bại, tôi muốn thoát khỏi toàn bộ chương trình. Ví dụ:Làm cách nào để thoát khỏi chương trình theo lô khi có lỗi?

@echo off 
type foo.txt 2>> error.txt >> success.txt 
mkdir bob 

Nếu file foo.txt không được tìm thấy sau đó tôi muốn thông điệp stderr gắn vào file error.txt, khác nội dung của foo.txt được nối vào success.txt. Về cơ bản, nếu lệnh type trả về một stderr thì tôi muốn tệp batch để thoát và không tạo thư mục mới. Làm thế nào bạn có thể biết nếu một lỗi xảy ra và quyết định xem bạn có cần tiếp tục lệnh tiếp theo hay không?

+0

tôi thêm mã NẾU KHÔNG ERRORLEVEL 0 EXIT/B echo% errorlevel% trước lệnh mkdir bob, nhưng bất kể giá trị của ERRORLEVEL (tức là 0 hoặc 1) thư mục vẫn được tạo. Vì vậy, về cơ bản, ERRORLEVEL đang được thiết lập với một giá trị khác nhau cho dù lệnh loại tìm thấy tệp hay không, nhưng chương trình không thoát. Suy nghĩ? – Notorious2tall

Trả lời

10

sử dụng ERRORLEVEL để kiểm tra mã lối ra của lệnh trước:

if ERRORLEVEL 1 exit /b 

EDIT: tài liệu nói "điều kiện là đúng nếu mã lối ra của lệnh cuối cùng là bằng hoặc lớn hơn X" (bạn có thể kiểm tra điều này với if /?). ngoài này, bạn cũng có thể kiểm tra nếu tập tin tồn tại với

if exist foo.txt echo yada yada 

để thực hiện multple lệnh nếu điều kiện là đúng:

if ERRORLEVEL 1 (echo error in previous command & exit /b) 

hoặc

if ERRORLEVEL 1 (
    echo error in previous command 
    exit /b 
)