Вопрос:
Например, в пакетном файле я набрал следующую команду:
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