2010-09-09 16 views

Trả lời

27
@echo off 
rem ... 
set errorlevel= 
MyApp1.exe 
exit /b %errorlevel% 

sẽ là biến thể rõ ràng.

+0

thnx, cho đến khi powershell có thể trả về các mã thoát âm, tôi buộc phải tiếp tục gói các kịch bản PowerShell của mình với các script batch ~ – MDMoore313

+1

Dường như ít nhất PowerShell v3 có thể trả về các mã thoát âm: 'powershell 'exit -5'; $ LASTEXITCODE' mang lại '-5' cho tôi. – Joey

4

Bạn có thể thử sử dụng errorlevel s. Một số thông tin khác here.

+9

Đô, hoặc không. Không có "thử". (Và trong trường hợp này, nếu bạn sử dụng errorlevel, nó sẽ hoạt động;) – ewall

3

Câu trả lời được chấp nhận là đúng, nhưng nếu bạn đang sử dụng call để gọi một tập lệnh lô khác và tập lệnh lô thứ hai đang sử dụng SetLocal, bạn có thể cần phải sử dụng mẹo phân tích cú pháp để thực hiện việc này. Nếu bạn đang chạy vào điều này, thêm đoạn mã sau trước exit b của bạn:

ENDLOCAL&set myvariable=%myvariable% 

Bây giờ giá trị của myvariable được tạo sẵn cho các bối cảnh gọi điện thoại và bạn có thể nhìn thấy giá trị trong kịch bản khác.

Tài liệu tham khảo:
https://stackoverflow.com/a/16167938/89590
http://www.borngeek.com/2008/05/22/exiting-batch-file-contexts/

-1

% ERRORLEVEL% các cửa hàng giá trị trả về của lệnh thực thi cuối cùng

call program.exe 
echo program.exe returns "%ERRORLEVEL%" 
IF %ERRORLEVEL% NEQ 0 (
    echo FAILED 
) 
+2

Điều này đã được nêu ra bởi câu trả lời được chấp nhận từ nhiều năm trước, dường như với tôi. –

Các vấn đề liên quan