ERRORLEVEL - это значение, возвращаемое большинством команд cmd.exe, когда они заканчивают это изменение в зависимости от ряда условий, поэтому знание значения, возвращаемого командами, является ценной информацией, которая может помочь лучше писать пакетные файлы. Все внешние.exe-программы меняют ERRORLEVEL, когда они заканчиваются (это неотъемлемый механизм функций API ExitProcess и TerminateProcess Win-32), и обычно такие значения документируются, но значения, возвращаемые внутренними командами cmd.exe, не полностью документированы в другом месте,
В этом вопросе появляется таблица с частичными значениями ERRORLEVEL, но только для внутренних команд, которые устанавливают ERRORLEVEL = 0 "после успеха". Я предложил ОП такого вопроса изменить его, чтобы также включить значения, возвращаемые "неуспешными командами", но он отказался и предложил мне опубликовать свой собственный вопрос/ответ, так что вот оно! Вы должны заметить, что значение ERRORLEVEL, отличное от нуля, не обязательно означает, что команда не удалась! Есть некоторые команды, которые заканчиваются без ошибок и возвращают значение больше нуля, чтобы указать разные "статус выхода", включая внутренние команды (например, SET/P
).
Чтобы лучше использовать встроенные команды cmd.exe в Batch файлах, нам нужно знать значения ERRORLEVEL, которые они возвращают, и механизмы, задействованные в этом управлении. Итак, вопрос в том, какие внутренние команды cmd.exe устанавливают ERRORLEVEL для любого значения (включая ноль)?