Как выйти из пакетной программы при ошибке? - PullRequest
5 голосов
/ 22 июля 2010

У меня есть командный файл, который делает несколько вещей.Если один из них не удается, я хочу выйти из всей программы.Например:

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

Если файл foo.txt не найден, я хочу, чтобы сообщение stderr было добавлено к файлу error.txt, иначе содержимое файла foo.txt добавляется к success.txt.По сути, если команда type возвращает stderr, я хочу, чтобы пакетный файл завершился, а не создал новый каталог.Как узнать, произошла ли ошибка, и решить, нужно ли вам перейти к следующей команде или нет?

1 Ответ

10 голосов
/ 22 июля 2010

используйте ERRORLEVEL для проверки кода выхода предыдущей команды:

 if ERRORLEVEL 1 exit /b

РЕДАКТИРОВАТЬ : документация говорит: «условие истинно, если код выхода последней команды равенили БОЛЬШЕ, чем Х "(вы можете проверить это с помощью if /?).кроме этого, вы также можете проверить, существует ли файл с

 if exist foo.txt echo yada yada

для выполнения нескольких команд, если условие истинно:

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

или

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