каждый программист может обрабатывать коды выхода (возвращенные %errorlevel%
) по своему усмотрению. Существует общее мнение, что 0
означает «успех», а любое ненулевое значение означает «какую-то ошибку». Но на это нельзя полагаться.
Хороший пример — ping
. Если вы пропингуете несуществующий IP-адрес в своей собственной сети, он вернет
Answer from <localhost>: destination unreachable
.
Вы можете подумать, что это не удалось, и, следовательно, ожидать ненулевой уровень ошибки, но очевидно, что программист подумал: «Ну, вот является ответом, значит, он выполнен успешно"
Некоторые внутренние команды не затрагивают уровень ошибки, некоторые всегда возвращают ноль, некоторые всегда возвращают 1
(robocopy
, спасибо aschipfl).
Исполняемые файлы do
устанавливают уровень ошибки (спасибо Aacini), но как зависит от программатора. Некоторые из них всегда нулевые, большинство из них действительно пригодные для использования уровни ошибок.
Извините, что вынужден вам сказать: вы не можете полагаться на общие правила для %errorlevel%
. Вы должны проверить это для каждой отдельной команды/исполняемого файла (либо по документации (если вам очень повезло), либо попробовав)
person
Stephan
schedule
26.08.2016