Как узнать, успешно ли выполнена команда через пакетный файл?

Вопрос:Например, в пакетном файле я набрал следующую команду: xcopy C:fileA.txt D:Dir /y/d Не получится, если не будет файла fileA.txt. Но я хочу знать, не сработает ли он, а затем вывести некоторые сообщения пользователю. Как я могу это сделать? Любая помощь будет благодарна, спасибо! Лучший ответ: Большинство команд/программ возвращают 0 при успехе и другое значение, называемое

Вопрос:

Например, в пакетном файле я набрал следующую команду:

xcopy C:fileA.txt D:Dir /y/d

Не получится, если не будет файла fileA.txt. Но я хочу знать, не сработает ли он, а затем вывести некоторые сообщения пользователю. Как я могу это сделать?

Любая помощь будет благодарна, спасибо!

Лучший ответ:

Большинство команд/программ возвращают 0 при успехе и другое значение, называемое errorlevel, для сообщения об ошибке.

Вы можете проверить это в своем пакете, например,

if not errorlevel 0 goto ERR

xcopy errorlevels:

0 – Все файлы были скопированы без ошибок

1 – Файлы не найдены для копирования (недопустимый источник)

2 – XCOPY был прерван Ctrl-C до завершения копирования

4 – Произошла ошибка инициализации.

5 – Произошла ошибка записи на диск.

[1]

Ответ №1

Я думаю, что вас интересует “уровень ошибок”. См. http://www.robvanderwoude.com/errorlevel.php. В основном, в вашем пакетном файле вы можете проверить код состояния команды (аналогично Unix или Linux), сказав

IF ERRORLEVEL 1 <do something> IF ERRORLEVEL 2 <do something>

где 1 и 2 – возможные значения кода состояния, возвращаемого последней выполненной программой. Вы также можете сделать что-то вроде

echo %ERRORLEVEL%

чтобы распечатать код состояния, но обратите внимание, что он не всегда ведет себя как “нормальная” переменная среды. Одна вещь, которая делает ее другой, заключается в том, что она не отображается с командой “set”.

Ответ №2

Я нашел, что принятый ответ не сработал, но это произошло:

if %ERRORLEVEL% neq 0 goto ERR

Оцените статью
Добавить комментарий