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

28

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

Артем Тихомиров
источник

Ответы:

11

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

@echo off&setlocal ENABLEEXTENSIONS
call :func&&echo/I'm a cmd||echo/I'm a bat
goto :EOF

:func
md;2>nul
set var=1

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

хаос
источник
2
<3 запутанных сценария cmd :)
grawity
Иш! Я стою исправлено. Я никогда не знал, что такое поведение CMD.EXE раньше.
Эван Андерсон
6

Согласно Википедии:

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

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

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

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

KPWINC
источник
1

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

disserman
источник
0

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

Пит
источник