Bat и cmd в чем отличие
Перейти к содержимому

Bat и cmd в чем отличие

В чем разница между файлами .cmd и .bat?

Просто любопытно. «Крутые» люди в нашей компании всегда используют * .cmd, в то время как никто не смог объяснить мне разницу.

Есть семантические различия в языке команд, используемых для каждого ( .bat файлы получают версию совместимости). Некоторые из них могут быть проиллюстрированы этим скриптом отсюда :

По сути, .cmd файлы получают текущую, более сексуальную версию командного языка MS, поэтому крутые парни используют их.

.bat: первое расширение, используемое Microsoft для пакетных файлов. Это расширение может работать в большинстве операционных систем Microsoft, включая MS-DOS и большинство версий Microsoft Windows.

.cmd: более новое расширение .cmd описывается системами на базе Windows NT как «командный сценарий Windows NT» и полезно, поскольку использование расширения .cmd вместо расширения .bat означает, что более ранние версии Windows не будут знать, как запустите его, чтобы они не пытались и не принимали команды за файлы стилей COMMAND.COM и не запускали команды нового стиля из-за отсутствия расширений команд, в результате чего скрипты выполняются только частично, что может привести к повреждению (для пример: не удается проверить успешное копирование файла, а затем удалить оригинал в любом случае).

Единственная известная разница между обработкой файлов .cmd и .bat заключается в том, что в файле .cmd переменная ERRORLEVEL изменяется даже для успешной команды, на которую влияют расширения команд (если включены расширения команд), тогда как в файлах .bat переменная ERRORLEVEL изменяется только при ошибках.

В чем разница между .cmd и .bat-файлами?

Просто любопытно. «Прохладные» люди в нашей компании всегда используют * .cmd, хотя никто не смог объяснить мне эту разницу.

5 ответов

Существуют семантические различия в языке команд, который используется для каждого ( .bat ), чтобы получить версию совместимости). Некоторые из них можно проиллюстрировать на этом скрипте из здесь :

В принципе, файлы .cmd получают текущую, более сексуальную версию командного языка MS, поэтому к ним подходят классные дети.

.bat: первое расширение, используемое Microsoft для пакетных файлов. Это расширение можно запустить в большинстве операционных систем Microsoft, включая MS-DOS и большинство версий Microsoft Windows.

.cmd: новое расширение .cmd описывается системами на базе Windows NT как «командный сценарий Windows NT» и полезно, поскольку использование расширения .cmd, а не расширение .bat означает, что более ранние версии Windows не будут знаете, как запустить его, чтобы они не пытались и не выполняли команды для файлов стиля COMMAND.COM и не могли запускать новые команды стиля из-за отсутствия расширений команд, в результате чего скрипты выполнялись только частично, что могло бы доказать (например, не удается проверить успешное копирование файла, а затем удалять оригинал в любом случае).

Единственное известное различие между обработкой файлов .cmd и .bat заключается в том, что в файле .cmd переменная ERRORLEVEL изменяется даже при успешной команде, на которую влияют расширенные команды (когда расширены командные расширения), тогда как в .bat-файлах переменная ERRORLEVEL изменяется только при ошибках.

Надеюсь, что это поможет.

В теории .cmd больше «trueЪ» :), потому что .bat — это сценарий для старого DOS command.com, а .cmd для cmd.exe из Windows NT, у последнего есть немного более совершенные сценарии. В реальной жизни обычно оба равны, например, запись /bin /sh или /bin /bash в Linux (средние дистрибутивы, где sh фактически bash)

Сначала я увидел формат .cmd, используемый под OS /2. Если вы думаете в терминах DOS, это похоже на файл .bat на стероидах. .bat были введены сначала под ОС DOS. Аналогичный синтаксис аналогичен тому, когда вы начинаете работать с расширенными функциями. Кроме того, файл .cmd может не работать в 16-разрядной среде (win98), тогда как файл .bat, вероятно, будет работать во всех средах.

Bat и cmd в чем отличие

Не будем останавливаться на истории языка командных файлов. Рассмотрим чисто практический вопрос- одинаково ли работают файлы с расширением bat и cmd. Оказывается, не всегда!

Для команд PATH/APPEND/PROMPT/SET/ASSOC в файлах с расширением CMD ERRORLEVEL будет установлен вне зависимости от ошибок. В файлах с расширением BAT эти команды устанавливают ERRORLEVEL ТОЛЬКО при ошибке.

Рассмотрим простой пример.

Далее сохраним этот текст в файл с расширением bat и в файл с расширением cmd.
Bat файл выдаст результат:

Он же, но с расширением cmd выдаст такой результат:

Как говорится, найдите отличие.

Ну и, наконец, ссылки по теме, в том числе на источники. Более подробно вы можете ознакомится с этим вопросом тут и тут.

Для вопросов, обсуждений, замечаний, предложений и т. п. можете использовать раздел форума этого сайта (требуется регистрация).

Новый раздел о средствах командной строки в рамках этого же проекта расположен здесь

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *