КМД — командная оболочка Microsoft¶
КМД (командный файл, от англ. command file) — текстовый файл с расширением .cmd, содержащий последовательность команд для командного интерпретатора Windows cmd.exe. КМД-файлы являются преемником и расширением устаревших DOS-файлов .bat (батч-файлов) и поддерживают дополнительные конструкции, недоступные их предшественникам. В операционных системах Windows они используются для автоматизации рутинных операций: запуска программ, копирования файлов, настройки окружения, установки программного обеспечения и выполнения регламентированных задач.
¶История и происхождение
Командные файлы появились ещё в операционной системе MS-DOS, где получили расширение .bat (сокращение от batch — «пакет»). Интерпретатор command.com последовательно выполнял команды, записанные в текстовый файл. С выходом Windows NT (1993 год) появился более развитый интерпретатор cmd.exe, который сохранил обратную совместимость с батч-файлами, но получил собственный формат файлов с расширением .cmd.
Основное техническое отличие .cmd от .bat заключается в правилах интерпретации: КМД-файлы обрабатываются с учётом расширенных синтаксических правил (в частности, корректно работают конструкции call с вложенными пакетными файлами, исправлено поведение с экранированием специальных символов). При запуске батч-файла через cmd.exe его команды выполняются в режиме совместимости, имитирующем поведение старого интерпретатора.
¶Синтаксис и основные команды
КМД-файл представляет собой обычный текстовый файл (кодировка — ANSI или UTF-8 с меткой BOM), каждая строка которого содержит одну команду или управляющую конструкцию. Интерпретатор поддерживает как встроенные команды (внутренние команды cmd.exe), так как вызов внешних исполняемых файлов.
¶Встроенные команды
| Команда | Назначение |
|---|---|
echo | Вывод текста на экран или в файл |
set | Создание и изменение переменных окружения |
if | Условный оператор (ветвление) |
for | Цикл по списку значений или файлам |
call | Вызов другого пакетного файла или метки |
goto | Переход к метке внутри файла |
cd / chdir | Просмотр и смена текущего каталога |
copy / xcopy | Копирование файлов и каталогов |
del / erase | Удаление файлов |
dir | Вывод содержимого каталога |
pause | Приостановка выполнения до нажатия клавиши |
exit | Завершение интерпретатора |
¶Управляющие конструкции
КМД поддерживает условные операторы if с проверкой существования файлов (if exist), равенства строк (if "a"=="b") и значения переменных (if %var%==value), а также оператор else. Цикл for позволяет перебирать файлы каталога, содержимое текстового файла или заданный список значений. Перенаправление ввода-вывода (>, >>, <, |) позволяет формировать цепочки обработки данных средствами конвейера.
¶Отличия от батч-файлов
| Признак | .bat | .cmd |
|---|---|---|
| Интерпретатор | command.com / cmd.exe в режиме совместимости | cmd.exe в нативном режиме |
Обработка call | Ограничения при рекурсивных вызовах | Корректная работа с вложенными вызовами |
| Экранирование | Старые правила обработки символов | Исправленное поведение с ^ и кавычками |
| Доступные функции | Базовый набор | Поддержка расширенного синтаксиса (setlocal enabledelayedexpansion) |
¶Пример простого КМД-файла
`` @echo off setlocal set TARGET=%USERPROFILE%\Documents\Backup if not exist "%TARGET%" mkdir "%TARGET%" copy /Y "C:\data\report.txt" "%TARGET%" echo Backup completed at %DATE% %TIME% pause ``
В этом примере скрипт отключает вывод команд (@echo off), создаёт переменную с путём к каталогу резервных копий, при необходимости создаёт каталог, копирует файл и выводит сообщение с текущими датой и временем.
¶Применение
КМД-файлы широко используются в системном администрировании Windows для:
- автоматической установки программного обеспечения (тихая установка с параметрами командной строки);
- развёртывания групповых политик и настройки рабочих станций;
- создания резервных копий и синхронизации данных;
- запуска служебных утилит по расписанию через планировщик задач Windows;
- сбора диагностической информации о системе.
В корпоративной среде КМД-скрипты применяются в составе пакетов развёртывания (например, через системы управления программным обеспечением), где они выполняют установку и настройку после распаковки дистрибутива.
¶Ограничения
Командный интерпретатор cmd.exe имеет ограниченные возможности по сравнению с PowerShell: слабая типизация данных, отсутствие объектно-ориентированного подхода, неудобная работа с Unicode и сложная обработка строк. Microsoft рекомендует использовать PowerShell для новых сценариев автоматизации, однако КМД-файлы сохраняют актуальность благодаря совместимости со старыми системами и простоте для базовых задач.
¶См. также
- Командная строка Windows
- PowerShell
- Пакетный файл
¶Источники
- Документация Microsoft по
cmd.exe(Microsoft Learn) - «Windows Command Line Administration Instant Reference», William R. Stanek
- «Windows Server Cookbook», Robbie Allen, O'Reilly Media
