Просто любопытно. «Крутые» люди в нашей компании всегда используют * .cmd, а мне никто не смог объяснить разницу.
Есть семантические различия в командном языке, используемом для каждого (.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, поэтому крутые ребята их используют.
Согласно Википедии:
.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 - это сценарий для старого 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, вероятно, будет работать во всех средах.