Отличия BAT от CMD
Не будем останавливаться на истории языка командных файлов. Рассмотрим чисто практический вопрос- одинаково ли работают файлы с расширением bat и cmd. Оказывается, не всегда!Для команд PATH/APPEND/PROMPT/SET/ASSOC в файлах с расширением CMD ERRORLEVEL будет установлен вне зависимости от ошибок. В файлах с расширением BAT эти команды устанавливают ERRORLEVEL ТОЛЬКО при ошибке.
Рассмотрим простой пример.
@echo off
setlocal ENABLEEXTENSIONS
ver>nul
echo After the VER command, errorlevel is %errorlevel%
md;2>nul
echo Using MD incorrectly, errorlevel is %errorlevel%
set var=1
echo After setting var, errorlevel is %errorlevel%
Далее сохраним этот текст в файл с расширением bat и в файл с расширением cmd.
Bat файл выдаст результат:
After the VER command, errorlevel is 0
Using MD incorrectly, errorlevel is 1
After setting var, errorlevel is 1
Он же, но с расширением cmd выдаст такой результат:
After the VER command, errorlevel is 0
Using MD incorrectly, errorlevel is 1
After setting var, errorlevel is 0
Как говорится, найдите отличие.
Ну и, наконец, ссылки по теме, в том числе на источники. Более подробно вы можете ознакомится с этим вопросом тут и тут.
Для вопросов, обсуждений, замечаний, предложений и т. п. можете использовать раздел форума этого сайта (требуется регистрация).
Новый раздел о средствах командной строки в рамках этого же проекта расположен здесь