Чем отличается cmd от bat

Чем отличается cmd от bat

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

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

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

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

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

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

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

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

Просто любопытно. «Прохладные» люди в нашей компании всегда используют * .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
Тип формата Скриптовый язык программирования

Пакетный файл (англ. batch file ) — текстовый файл в MS-DOS, OS/2 или Windows, содержащий последовательность команд, предназначенных для исполнения командным интерпретатором. После запуска пакетного файла программа-интерпретатор (как правило, COMMAND.COM или cmd.exe) читает его строка за строкой и последовательно исполняет команды. Пакетный файл — аналог скриптовых файлов командной строки (shell script) в Unix-подобных операционных системах.

Пакетные файлы в DOS имеют расширение .BAT ; для других операционных систем они могут иметь другие расширения — например, .CMD в Windows NT и OS/2 или .BTM в 4DOS или подобных оболочках.

Читайте также:  Почему не скачивается вайбер на телефон

Содержание

История [ править | править код ]

Поддержка пакетных файлов имелась в MS-DOS с самого начала. Командные интерпретаторы этой системы (а затем и Windows) предлагают два режима работы: интерактивный (когда пользователь подтверждает выполнение каждой команды пакетного файла) и обычный (когда все команды пакетного файла выполняются без подтверждения). Концепция обоих режимов была почерпнута из интерфейсов командной строки предшествующих ОС (таких как CP/M) и Unix-оболочек.

Командный интерпретатор в MS-DOS (а следом и в семействе Windows 9x) имеет название COMMAND.COM. Наиболее известным пакетным файлом в этих системах является AUTOEXEC.BAT, который автоматически исполняется COMMAND.COM во время загрузки операционной системы.

Семейство Windows NT (2k, XP и далее) не основаны на MS-DOS и включают интерпретатор cmd.exe, который частично совместим с COMMAND.COM. Некоторые старые возможности COMMAND.COM в нём недоступны, однако вместо них появились новые. COMMAND.COM включается в NT-подобные системы для обеспечения лучшей обратной совместимости.

Существуют и другие командные интерпретаторы, разработанные сторонними компаниями и предоставляющие расширенный синтаксис команд для пакетного программирования — например, 4DOS.

Также существуют компиляторы пакетных файлов (например, Bat To Exe Converter), преобразующие пакетные файлы в самостоятельные исполнимые программы.

Применение [ править | править код ]

Пакетные файлы полезны для автоматического запуска приложений. Основная область применения — автоматизация наиболее рутинных операций, которые регулярно приходится совершать пользователю компьютера: например, копирование, перемещение, переименование, удаление файлов; работа с папками; архивация и т. п.

Вирусы и программы-шутки могут быть написаны в виде пакетного файла, известны также генераторы вирусов, являющиеся пакетными файлами(Virra 1.0, BADtch R.A.T. 0.4, и другие).

Содержание [ править | править код ]

Пакетные файлы поддерживают операторы if, goto и for (в системах семейства Windows NT его возможности существенно расширены), что позволяет обрабатывать результаты выполнения предыдущих команд или приложений и в зависимости от этого выполнять дальше тот или иной блок команд (как правило, в случае удачного завершения приложение возвращает 0 в переменной errorlevel; в случае неудачного — 1 или большее значение).

Читайте также:  Использование windows 10 home в коммерческих целях

Пакетные файлы могут содержать как внутренние команды, обрабатываемые непосредственно COMMAND.COM или CMD.EXE, так и обращения к внешним утилитам, существующим в виде отдельных программ (файлов .EXE либо любых других исполнимых модулей).

Пример [ править | править код ]

Пример пакетного файла, вычисляющего выражения введённые пользователем:

Ссылка на основную публикацию
Adblock detector