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.