Bagaimana cara memeriksa kode keluar dari perintah terakhir dalam file batch?


Jawaban:


78

Tes untuk kode pengembalian lebih besar dari atau sama dengan 1:

if ERRORLEVEL 1 echo Error

atau

if %ERRORLEVEL% GEQ 1 echo Error

atau uji untuk kode pengembalian sama dengan 0:

if %ERRORLEVEL% EQU 0 echo OK

Anda bisa menggunakan perintah lain seperti GOTOtempat saya tunjukkan echo.


Saya mencoba kode Anda. Saya mendapat kesalahan berikut:0 was unexpected this time.
— Misha Moroshko

2
@Misha: Anda mungkin sudah mencobanya dengan tanda persen seperti cara saya mempostingnya. Cobalah tanpa mereka atau coba versi lain yang saya tambahkan.
— Dennis Williamson

2
Ditemukan kasus di mana %ERRORLEVEL%0 meskipun terjadi kesalahan. Terjadi ketika memeriksa %ERRORLEVEL%dalam file cmd. Berusaha start /waittidak berhasil. Satu-satunya hal yang berhasil adalahif errorlevel 1 (...)
— AlikElzin-kilaka

4
Sadarilah, tingkat kesalahan bukan variabel lingkungan . Berikut ini adalah ringkasan yang bagus dari perangkap dan kehalusannya .
— Nick Westgate

Bisakah saya menyarankan menggunakan NEQdaripada EQUmendukung mendeteksi kode pengembalian negatif? Tidak tahu apakah Windows XP melakukan itu, tetapi itu adalah hal pada Windows modern ...
— binki

10

Ini benar-benar berfungsi ketika Anda memiliki: Panggilan App1.exe -> .bat yang berjalan -> app2.exe

App2 mengembalikan errorlevel 1 ... tetapi Anda harus menangkapnya di .bat dan menaikkannya kembali ke app1 ... jika tidak .bat memakan errorlevel dan app1 tidak pernah tahu.

Metode:

Di .bat:

app2.exe
if %ERRORLEVEL% GEQ 1 EXIT /B 1

Ini adalah pemeriksaan setelah app2 untuk tingkat kesalahan. Jika> 0, maka .bat keluar dan setel tingkat kesalahan ke 1 untuk aplikasi panggilan1.


4
bisa lebih baik lagi jika Anda mengembalikan kesalahan yang sama kembali ke app1. saya tidak mencoba hal ini, tetapi harus bekerja: if %ERRORLEVEL% GEQ 1 EXIT /B %ERRORLEVEL%.
— Viktor Fonic

2
Paling tidak di Windows,% ERRORLEVEL% dapat berupa angka negatif (misalnya saya memiliki program yang mengembalikan -1 pada kesalahan). IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%mungkin opsi yang lebih baik. Tetapi Anda benar-benar perlu tahu program apa yang mengembalikan kesalahan. Beberapa program mengembalikan kode non-nol tertentu untuk jenis kesuksesan khusus.
— Euro Micelli

Jika app2 adalah hal terakhir yang Anda jalankan di file bat, kode kesalahan akan menyebar.
— AnrDaemon
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.