2010-07-21 19 views
5

Birkaç şey yapan bir toplu iş dosyası var. Bunlardan biri başarısız olursa, tüm programdan çıkmak istiyorum. Örneğin:Hata durumunda bir toplu iş programından nasıl çıkılır?

@echo off 
type foo.txt 2>> error.txt >> success.txt 
mkdir bob 

dosya fan.txt başka fan.txt içeriği success.txt eklenir error.txt dosyasına eklenir Stderr mesajı, istediğiniz ardından bulunmazsa. Temel olarak, type komutu bir stderr döndürürse, toplu iş dosyasının çıkmasını ve yeni bir dizin oluşturmasını istemiyorum. Bir hatanın meydana gelip gelmediğini nasıl anlarsınız ve bir sonraki komuta devam etmeniz gerekip gerekmediğine nasıl karar verebilirsiniz?

if ERRORLEVEL 1 exit /b 

EDIT: çıkış önceki komutunun kodunu kontrol etmek

+0

ben kod eklendi ERRORLEVEL 0 EXIT/B echo% errorlevel% mkdir bob komutundan önce, ancak ERRORLEVEL değeri (ör. 0 veya 1) dizin hala oluşturulur. Yani temel olarak, ERRORLEVEL, tip komutunun dosyayı bulup bulmadığını farklı bir değerle ayarlıyor, ancak program çıkmıyor. Düşünceler? – Notorious2tall

cevap

10

kullanım ERRORLEVEL belgelerine ("son komutun çıkış kodu EŞİT veya X büyükse koşul doğru olduğunda" ifadesinin yer aldığı bunu if /? ile kontrol edebilir. Dosya

if exist foo.txt echo yada yada 

ile varsa kenara bu dışında, ayrıca koşul doğruysa multple komutları çalıştırmak için kontrol edebilir:

if ERRORLEVEL 1 (echo error in previous command & exit /b) 

veya

if ERRORLEVEL 1 (
    echo error in previous command 
    exit /b 
) 
İlgili konular