Toplu iş dosyasındaki son komutun çıkış kodunu nasıl kontrol edebilirim?


Yanıtlar:


78

1 veya daha büyük bir dönüş kodu olup olmadığını test edin:

if ERRORLEVEL 1 echo Error

veya

if %ERRORLEVEL% GEQ 1 echo Error

veya 0'a eşit bir dönüş kodu olup olmadığını test edin:

if %ERRORLEVEL% EQU 0 echo OK

Aşağıdaki gibi diğer komutları kullanabilirsiniz GOTOben nerede gösterileceğini echo.


Kodunu denedim. Aşağıdaki hatayı aldım:0 was unexpected this time.
Misha Moroshko

2
@Misha: Aslen yayınladığım şekilde yüzde işareti ile denemiş olabilirsiniz. Onlarsız deneyin ya da eklediğim diğer sürümleri deneyin.
Dennis Williamson,

2
%ERRORLEVEL%Bir hata meydana gelse de 0 olduğu durumlarda bulundu . %ERRORLEVEL%Bir cmd dosyasında kontrol edilirken oldu . Denemek start /waitişe yaramadı. Çalışan tek şeyif errorlevel 1 (...)
AlikElzin-kilaka

4
Dikkat edin, hata seviyesi bir ortam değişkeni değildir . İşte tuzaklar ve inceliklerin iyi bir özeti .
Nick Westgate

Negatif geri dönüş kodlarını saptamak NEQyerine kullanmayı önerebilir miyim EQU? Windows XP bunu yaparsa hiç bir fikrim yok, ama modern Windows'ta bir şey…
binki

10

Bu gerçekten varken çalışır: App1.exe çağırır -> .bat hangi çalışır -> app2.exe

App2 hata seviyesi 1'i döndürür ... ancak bunu .bat'ta yakalamanız ve tekrar app1'e yükseltmeniz gerekir ... aksi halde .bat hata seviyesini yerse ve app1 asla bilmez.

Yöntem:

.Bat'ta:

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

Bu, error2 için app2'den sonraki bir kontrol. > 0 ise, .bat çıkar ve çağıran app1 için errorlevel değerini 1 olarak ayarlar.


4
Aynı hatayı tekrar app1'e döndürdüyseniz daha da iyi olabilirdi. Ben bu deneyin vermedi, ancak çalışması gerekir: if %ERRORLEVEL% GEQ 1 EXIT /B %ERRORLEVEL%.
Viktor Fonic

2
En azından Windows'ta,% ERRORLEVEL% negatif bir sayı olabilir (örneğin, hatalarda -1 döndüren bir programım var). IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%daha iyi bir seçenek olabilir. Ancak, programın hatalarla ne döndüğünü gerçekten bilmeniz gerekir. Bazı programlar özel başarı türleri için sıfır olmayan kodlar döndürür.
Euro Micelli

App2 yarasa dosyasında çalıştırdığınız son şeyse, hata kodu yayılır.
AnrDaemon
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.