- BREAK — управление обработкой Ctrl+C в командной строке Windows
- Синтаксис команды BREAK
- Ключи и параметры
- Примеры использования
- Проверить текущий статус
- Включить расширенную обработку Ctrl+C
- Отключить обработку Ctrl+C в критической секции
- Использование в bat-файле с проверкой статуса
- Проверка влияния в интерактивном сеансе
- Частые ошибки и решения
- Когда применять, а когда нет
- FAQ
- Что делает BREAK без параметров?
- Влияет ли BREAK ON на реальное прерывание программ в Windows 10?
- Как прервать зависший скрипт CMD, если BREAK не помогает?
- Можно ли навсегда включить BREAK ON для всех сессий CMD?
- Чем BREAK в CMD отличается от BREAK в PowerShell?
- Нужна ли BREAK в скриптах автоматизации?
BREAK — управление обработкой Ctrl+C в командной строке Windows
BREAK — встроенная команда CMD, которая включает или отключает расширенную проверку комбинации клавиш Ctrl+C во время выполнения команд. Команда унаследована из эпохи MS-DOS и сохранена в Windows для совместимости; в современных версиях Windows её практический эффект минимален, однако в bat-скриптах она по-прежнему встречается.
Синтаксис команды BREAK
BREAK [ON | OFF]
Без аргументов BREAK выводит текущее состояние: BREAK is on или BREAK is off.
ON— включить расширенную проверку Ctrl+C (DOS-поведение: проверять нажатие при каждом системном вызове).OFF— отключить расширенную проверку; прерывание возможно только при чтении с консоли.
Ключи и параметры
| Параметр | Описание | Пример |
|---|---|---|
| (без параметра) | Вывести текущий статус BREAK | BREAK |
ON | Включить расширенную обработку Ctrl+C | BREAK ON |
OFF | Отключить расширенную обработку Ctrl+C | BREAK OFF |
Других ключей у команды нет — это одна из самых лаконичных команд CMD.
Примеры использования
Проверить текущий статус
Запустите команду без аргументов, чтобы узнать, включена ли расширенная обработка Ctrl+C в текущей сессии.
BREAK
CMD выведет строку BREAK is on или BREAK is off.
Включить расширенную обработку Ctrl+C
Используйте BREAK ON перед запуском цикла или длительной операции, если хотите иметь возможность прервать её нажатием Ctrl+C.
BREAK ON
FOR /L %%i IN (1,1,100) DO (
echo Обработка %%i
ping -n 2 127.0.0.1 >nul
) После нажатия Ctrl+C выполнение цикла будет прервано.
Отключить обработку Ctrl+C в критической секции
В скриптах резервного копирования или транзакционных операциях можно временно запретить прерывание, чтобы не оставить данные в несогласованном состоянии.
BREAK OFF :: Критическая операция — нельзя прерывать XCOPY C:\data D:\backup /E /Y BREAK ON
После завершения XCOPY обработка Ctrl+C снова включается.
Использование в bat-файле с проверкой статуса
Сохраните текущий статус, выполните операцию, затем восстановите исходное состояние.
@echo off BREAK OFF echo Запуск защищённой секции... COPY важный_файл.dat резервная_копия.dat BREAK ON echo Готово.
Проверка влияния в интерактивном сеансе
Убедитесь, что после выхода из вложенной оболочки статус BREAK восстанавливается.
BREAK ON cmd /c "BREAK OFF && BREAK" BREAK
Последняя строка покажет, что в родительской оболочке BREAK по-прежнему on — вложенный cmd /c не влияет на родительский сеанс.
Частые ошибки и решения
| Ошибка / ситуация | Причина | Решение |
|---|---|---|
| BREAK ON не позволяет прервать программу через Ctrl+C | В 32/64-разрядных Windows расширенная DOS-проверка не поддерживается ядром; команда принята, но не влияет на поведение Win32-приложений | Для прерывания Win32-процессов используйте Ctrl+C напрямую или TASKKILL /F /PID <pid> |
Неверный параметр — ошибка при вводе BREAK YES | Команда принимает только ON, OFF или пустой ввод | Используйте строго BREAK ON или BREAK OFF |
| BREAK в PowerShell вызывает ошибку | BREAK в PowerShell — ключевое слово для выхода из цикла, а не команда CMD | Открывайте cmd.exe явно: cmd /c "BREAK ON" |
| Статус BREAK не сохраняется после закрытия CMD | Настройка действует только в текущей сессии CMD, не сохраняется в реестре | Добавьте BREAK ON в начало каждого скрипта, где это нужно |
| BREAK OFF не защищает от Ctrl+Break | Комбинация Ctrl+Break обрабатывается независимо от состояния BREAK | Защиты от Ctrl+Break средствами CMD нет; используйте обёртку в виде сервиса или планировщика задач |
Когда применять, а когда нет
BREAK стоит использовать только в bat-скриптах, которые должны быть совместимы с очень старым окружением или документируют поведение DOS-эпохи. В современных скриптах PowerShell или cmd.exe под Windows 10/11 команда технически принимается, но реального эффекта не оказывает — ядро NT не реализует DOS-режим расширенной проверки. Аналог в PowerShell: ключевое слово break внутри циклов (foreach, while) и блоков switch — оно прерывает выполнение конструкции, но не связано с Ctrl+C. Для перехвата сигнала прерывания в PowerShell используйте блок try/finally или обработчик Register-EngineEvent.
FAQ
Что делает BREAK без параметров?
Выводит текущее состояние: BREAK is on или BREAK is off. Никаких изменений в настройки не вносит.
Влияет ли BREAK ON на реальное прерывание программ в Windows 10?
Нет. В 32/64-разрядных версиях Windows ядро NT не поддерживает DOS-режим расширенной проверки Ctrl+C. Команда принимается без ошибки, но поведение системы не меняется.
Как прервать зависший скрипт CMD, если BREAK не помогает?
Нажмите Ctrl+C прямо в окне CMD — это работает независимо от состояния BREAK. Если CMD не реагирует, используйте TASKKILL /F /PID <pid> или закройте окно принудительно через Диспетчер задач.
Можно ли навсегда включить BREAK ON для всех сессий CMD?
Нет, настройка не сохраняется между сессиями. Добавьте BREAK ON в файл автозапуска CMD через ключ реестра HKCU\Software\Microsoft\Command Processor\AutoRun, если это действительно нужно.
Чем BREAK в CMD отличается от BREAK в PowerShell?
В CMD BREAK — команда управления обработкой Ctrl+C (DOS-совместимость). В PowerShell break — ключевое слово для немедленного выхода из цикла или блока switch. Это совершенно разные механизмы.
Нужна ли BREAK в скриптах автоматизации?
Как правило, нет. Современные скрипты CMD используют Ctrl+C, TASKKILL или механизм ошибок (IF ERRORLEVEL) для управления потоком. BREAK ON/OFF имеет смысл только при портировании старых DOS-скриптов.


