2013-02-04 33 views

Trả lời

21

Bạn có thể sử dụng

if errorlevel 1 echo Unsuccessful 

trong một số trường hợp. Điều này phụ thuộc vào lệnh cuối cùng trả lại mã thoát thích hợp. Bạn sẽ không thể nói rằng có bất cứ điều gì sai nếu chương trình của bạn trở lại bình thường ngay cả khi có một điều kiện bất thường.

+0

Đây là câu trả lời đúng vì nó rõ ràng hơn là kiểm tra '% errorlevel%' vì [ERRORLEVEL không phải là% ERRORLEVEL%] (https://blogs.msdn.microsoft.com/oldnewthing/20080926-00/?p=20743). – sschuberth

1

Tôi không biết liệu javaw có ghi vào biến% errorlevel% hay không, nhưng có thể.

echo %errorlevel% sau khi bạn chạy trực tiếp để xem.

Ngoài ra, bạn có thể dẫn đầu ra của javaw vào một tệp, sau đó sử dụng find để xem kết quả là gì. Không biết đầu ra của nó, tôi thực sự không thể giúp bạn với điều đó.

43

Điều này có thể không làm việc với start, như bắt đầu một cửa sổ mới, nhưng để trả lời câu hỏi của bạn:

Nếu lệnh trả về một mức độ lỗi mà bạn có thể kiểm tra những cách sau đây

Bằng cách cụ thể lỗi Cấp

commandhere 
if %errorlevel%==131 echo do something 

By Nếu Bất kỳ lỗi

commandhere || echo what to do if error level ISN'T 0 

By Nếu Không Lỗi

commandhere && echo what to do if error level IS 0 

Nếu nó không trả lại một mức độ lỗi nhưng không cung cấp cho đầu ra, bạn có thể bắt nó trong một biến và xác định bởi đầu ra, ví dụ (lưu ý các thẻ và delims chỉ là ví dụ và có khả năng sẽ thất bại với bất kỳ ký tự đặc biệt)

bằng cách phân tích cú pháp đầy đủ Output

for /f "tokens=* delims=" %%a in ('somecommand') do set output=%%a 
if %output%==whateveritwouldsayinerror echo error 

Hoặc bạn chỉ có thể tìm kiếm một cụm từ duy nhất trong đầu ra như từ Lỗi

bằng cách kiểm tra chuỗi

commandhere | find "Error" || echo There was no error! 
commandhere | find "Error" && echo There was an error! 

Và thậm chí bạn có thể trộn với nhau (chỉ cần nhớ để thoát | với ^| nếu trong tuyên bố for)

Hy vọng điều này sẽ hữu ích.

6

Hầu hết các lệnh/chương trình trả về 0 thành công và một số giá trị khác, được gọi là errorlevel, để báo hiệu lỗi.

Bạn có thể kiểm tra cho điều này trong bạn hàng loạt ví dụ bằng cách:

call <THE_COMMAND_HERE> 
if %ERRORLEVEL% == 0 goto :next 
echo "Errors encountered during execution. Exited with status: %errorlevel%" 
goto :endofscript 

:next 
echo "Doing the next thing" 

:endofscript 
echo "Script complete" 
2

Goodness Tôi đã có một thời gian khó khăn để tìm câu trả lời cho này ... Ở đây là:

cd thisDoesntExist 
if %errorlevel% == 0 (
    echo Oh, I guess it does 
    echo Huh. 
) 
Các vấn đề liên quan