2012-04-27 23 views
20

phép nói rằng chúng ta muốn tạo một tập tin rỗng trong Windows bằng lệnh sau:file chuyển hướng trong Windows và% errorlevel%

type nul > C:\does\not\exist\file.txt 

thư mục không tồn tại, vì vậy chúng tôi nhận được lỗi:

The system cannot find the path specified 

Nếu bạn in ra %errorlevel% đầu ra là:

echo %errorlevel% 
0 

Tuy nhiên, lệnh không suc cessful!

tôi nhận thấy, các cửa sổ mà không thiết lập các %errorlevel% của lệnh cuối cùng nếu bạn sử dụng chuyển hướng ..

Có một khoảng cách này?

Trả lời

27

Bạn có thể sử dụng như sau:

C:\>type nul > C:\does\not\exist\file.txt && echo ok || echo fail 
The system cannot find the path specified. 
fail 

C:\>echo %errorlevel% 
1 

tôi luôn đảm nhận & & và || các toán tử đã sử dụng ERRORLEVEL, nhưng dường như không.

Rất tò mò rằng ERRORLEVEL được đặt sau khi lỗi chuyển hướng chỉ khi bạn sử dụng || nhà điều hành. Tôi không bao giờ có thể đoán được. Tôi cũng sẽ không bao giờ bận tâm để kiểm tra nếu không cho câu hỏi tuyệt vời của bạn.

Nếu tất cả các bạn muốn làm là thiết lập ERRORLEVEL khi thất bại chuyển hướng, thì tất nhiên bạn chỉ có thể làm:

type nul > C:\does\not\exist\file.txt || rem 
+1

@AndriyM - Bạn có chắc chắn ERRORLEVEL với tỉ số 0 trước khi bạn bắt đầu thử nghiệm? '&& REM' không" sửa "ERRORLEVEL đối với tôi trên XP hoặc Vista. – dbenham

+0

Bạn đã đúng, đó là tập hợp '1' sau khi thử nghiệm với' || '. Sau khi bình luận của bạn tôi kiểm tra lại và nó là '0'. Cảm ơn vì đã sửa tôi. –

+0

Một hành vi thực sự bất ngờ, nhưng có lẽ errorlevel được thiết lập bằng cách thoát khỏi lệnh sau khi thiết lập bởi các chuyển hướng – jeb

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