- CMD — запуск и настройка интерпретатора командной строки Windows
- Синтаксис команды CMD
- Ключи и параметры
- Примеры использования
- Выполнить команду и закрыть CMD
- Запустить скрипт и оставить окно открытым
- Запустить CMD с отложенным раскрытием переменных
- Записать вывод команды в файл в ANSI
- Запустить CMD без AutoRun-команд из реестра
- Запустить несколько команд в одной строке через CMD /C
- Открыть CMD от имени администратора через PowerShell
- Частые ошибки и решения
- Когда применять, а когда нет
- FAQ
- В чём разница между CMD /C и CMD /K?
- Как запустить CMD от имени администратора из командной строки?
- Как передать в CMD команду с кавычками внутри?
- Как отключить кириллицу в виде «?» в выводе CMD?
- Что такое AutoRun в контексте CMD?
- Чем CMD отличается от PowerShell?
CMD — запуск и настройка интерпретатора командной строки Windows
CMD (cmd.exe) — интерпретатор командной строки Windows, запускающий новую консольную сессию или выполняющий одну команду с немедленным завершением. Зная ключи CMD, можно управлять кодировкой вывода, отключать расширения, запускать скрипты от имени другого пользователя и встраивать CMD в цепочки автоматизации.
Синтаксис команды CMD
CMD [/A | /U] [/Q] [/D] [/E:ON | /E:OFF] [/F:ON | /F:OFF] [/V:ON | /V:OFF]
[{/S}] [/C строка | /K строка] строка— команда или последовательность команд для выполнения./C— выполнитьстрокаи завершить работу CMD./K— выполнитьстрокаи оставить CMD открытым./S— изменить обработку кавычек встрокепосле/Cили/K.
Ключи и параметры
| Ключ | Описание | Пример |
|---|---|---|
/C | Выполнить указанную команду и закрыть окно CMD | CMD /C ipconfig |
/K | Выполнить команду и оставить CMD открытым (полезно для отладки) | CMD /K dir C:\ |
/D | Отключить выполнение команд из AutoRun в реестре при запуске CMD | CMD /D |
/A | Задать кодировку ANSI для вывода команд в файл или канал (pipe) | CMD /A /C dir > list.txt |
/U | Задать кодировку Unicode (UTF-16 LE) для вывода в файл или канал | CMD /U /C dir > list.txt |
/Q | Включить режим тихого выполнения (отключить эхо команд, как @echo off) | CMD /Q /C backup.bat |
/E:ON | Включить расширения команд (по умолчанию включены) | CMD /E:ON |
/E:OFF | Отключить расширения команд (DOS-совместимый режим) | CMD /E:OFF |
/V:ON | Включить отложенное раскрытие переменных через !var! | CMD /V:ON /C script.bat |
/V:OFF | Отключить отложенное раскрытие переменных | CMD /V:OFF |
/F:ON | Включить автодополнение имён файлов и каталогов клавишей Tab | CMD /F:ON |
/S | Изменить поведение кавычек при обработке строки после /C или /K | CMD /S /C "echo hello" |
Примеры использования
Выполнить команду и закрыть CMD
Ключ /C запускает команду, возвращает результат и немедленно закрывает сессию CMD. Удобно для вызова из скриптов PowerShell или планировщика задач.
CMD /C ipconfig /all
Информация об IP-адресах будет выведена, затем CMD завершится.
Запустить скрипт и оставить окно открытым
При отладке bat-файлов используйте /K, чтобы увидеть вывод и сообщения об ошибках до закрытия окна.
CMD /K C:\Scripts\deploy.bat
Скрипт выполнится, но окно CMD останется открытым — можно прочитать вывод и ввести дополнительные команды.
Запустить CMD с отложенным раскрытием переменных
В циклах FOR переменные вычисляются в момент разбора строки, а не исполнения. Ключ /V:ON и синтаксис !VAR! решают эту проблему.
CMD /V:ON /C "SET COUNT=0 & FOR %%i IN (a b c) DO (SET /A COUNT+=1 & echo !COUNT!: %%i)"
Счётчик будет корректно увеличиваться внутри цикла благодаря отложенному раскрытию.
Записать вывод команды в файл в ANSI
По умолчанию кодировка вывода зависит от системной кодовой страницы. Ключ /A явно задаёт ANSI, что важно при передаче вывода в старые системы.
CMD /A /C dir C:\ > C:\Logs\filelist.txt
Запустить CMD без AutoRun-команд из реестра
Некоторые программы прописывают команды в ключ реестра AutoRun, которые выполняются при каждом запуске CMD. Ключ /D игнорирует их.
CMD /D
Новая сессия CMD запустится без автоматически выполняемых команд из реестра.
Запустить несколько команд в одной строке через CMD /C
Передайте несколько команд, объединив их через && (выполнить следующую, если предыдущая успешна) или & (выполнить всегда).
CMD /C "cd C:\Backup && xcopy D:\Data . /E /Y && echo Готово"
Открыть CMD от имени администратора через PowerShell
Из PowerShell можно запустить CMD с повышенными привилегиями, не покидая текущую сессию.
Start-Process cmd.exe -Verb RunAs
Частые ошибки и решения
| Ошибка / ситуация | Причина | Решение |
|---|---|---|
| CMD /C закрывается мгновенно, не успеваю прочитать вывод | /C закрывает окно сразу после выполнения команды | Замените /C на /K для отладки; в продакшне перенаправьте вывод в файл |
| Кириллица в выводе отображается как «кракозябры» | Несоответствие кодовых страниц CMD и консольного шрифта | Выполните CHCP 65001 в начале сессии для UTF-8, либо используйте ключ /U при записи в файл |
Кавычки в строке после /C обрабатываются неправильно | CMD по-разному обрабатывает внешние кавычки в зависимости от ключа /S | Добавьте /S: CMD /S /C "команда"; при необходимости экранируйте внутренние кавычки через \" |
| Переменные внутри цикла FOR не обновляются | Значения переменных раскрываются при разборе блока, а не при выполнении каждой итерации | Запустите CMD с ключом /V:ON и используйте синтаксис !VAR! вместо %VAR% |
| AutoRun-команды из реестра нарушают работу скрипта | Сторонние программы могут прописывать команды в HKCU\Software\Microsoft\Command Processor\AutoRun | Запускайте CMD с ключом /D в автоматизированных скриптах |
| CMD /C возвращает неверный код ошибки (ERRORLEVEL) | Если строка содержит несколько команд через &&, ERRORLEVEL отражает код последней команды | Проверяйте ERRORLEVEL после каждой критической команды внутри скрипта |
Когда применять, а когда нет
CMD с ключами оптимален для запуска bat-скриптов, встраивания консольных команд в автоматизацию (планировщик задач, вызов из других процессов) и работы с Legacy-приложениями, которые не понимают PowerShell. Для сложных задач автоматизации — обработки данных, работы с API, управления конфигурацией — предпочтительнее PowerShell или Python. Начиная с Windows 10 версии 1607 Microsoft рекомендует PowerShell как основную оболочку автоматизации. Аналог в PowerShell: сам PowerShell запускается аналогично — powershell.exe -Command "..." или powershell.exe -File script.ps1.
FAQ
В чём разница между CMD /C и CMD /K?
/C выполняет команду и закрывает окно CMD — подходит для скриптов и автоматизации. /K выполняет команду, но оставляет окно открытым — удобно для отладки и интерактивной работы.
Как запустить CMD от имени администратора из командной строки?
В PowerShell: Start-Process cmd.exe -Verb RunAs. В самом CMD — через runas /user:Администратор cmd.exe (потребует ввода пароля). Самый быстрый способ — зажать Ctrl+Shift при запуске CMD из меню Пуск.
Как передать в CMD команду с кавычками внутри?
Оберните всю строку во внешние кавычки и добавьте ключ /S: CMD /S /C "echo "текст в кавычках"". Если кавычки конфликтуют, используйте переменную среды или временный bat-файл.
Как отключить кириллицу в виде «?» в выводе CMD?
Выполните CHCP 65001 для переключения на UTF-8 и смените шрифт консоли на «Lucida Console» или «Consolas» — они поддерживают кириллицу в Unicode-режиме.
Что такое AutoRun в контексте CMD?
AutoRun — значение в реестре (HKCU\Software\Microsoft\Command Processor\AutoRun и аналогичный ключ в HKLM), содержащее команды, которые автоматически выполняются при каждом запуске CMD. Ключ /D игнорирует AutoRun.
Чем CMD отличается от PowerShell?
CMD — классический интерпретатор, работающий с текстовыми потоками и унаследованный из MS-DOS. PowerShell — современная объектно-ориентированная оболочка, работающая с объектами .NET, поддерживающая модули, удалённое управление и полноценное программирование. Для простых задач и совместимости со старыми скриптами используйте CMD; для автоматизации и администрирования Windows — PowerShell.


