Команда ECHO выводит текстовые строки в консоль и управляет режимом отображения команд в bat/cmd-сценариях. Она используется буквально в каждом скрипте Windows: для вывода статуса, записи строк в файл через перенаправление и подавления «эха» команд через @ECHO OFF.
- Синтаксис команды ECHO
- Ключи и параметры
- Примеры использования
- Подавление вывода команд в скрипте
- Вывод текстового сообщения
- Вывод значения переменной окружения
- Запись строки в файл
- Добавление строк в существующий файл (лог)
- Вывод пустой строки
- Создание многострочного файла
- Проверка текущего статуса ECHO
- Частые ошибки и решения
- Когда применять, а когда нет
- FAQ
- Почему ECHO. выводит пустую строку, а ECHO с пробелом — нет?
- Как вывести строку, которая содержит символ >?
- Как записать вывод команды в файл вместе с текстом ECHO?
- Влияет ли @ECHO OFF на вывод самой команды ECHO?
- Как вывести текст без перевода строки?
- Можно ли использовать ECHO внутри блока FOR или IF?
Синтаксис команды ECHO
ECHO [ON | OFF] ECHO [сообщение] ECHO.
Параметры:
ON— включить отображение команд в скрипте (режим по умолчанию).OFF— отключить отображение команд в скрипте.сообщение— текст, который будет напечатан в консоли.ECHO.(точка без пробела) — вывести пустую строку.
Ключи и параметры
| Вариант | Описание | Пример |
|---|---|---|
ECHO OFF | Скрыть отображение последующих команд | ECHO OFF |
@ECHO OFF | То же, но скрыть и саму строку ECHO OFF | @ECHO OFF |
ECHO ON | Вернуть отображение команд | ECHO ON |
ECHO текст | Вывести строку | ECHO Готово |
ECHO %VAR% | Вывести значение переменной | ECHO %USERNAME% |
ECHO. | Вывести пустую строку (точка без пробела) | ECHO. |
ECHO текст > файл | Записать строку в файл (перезапись) | ECHO line > out.txt |
ECHO текст >> файл | Добавить строку в конец файла | ECHO line2 >> out.txt |
Примеры использования
Подавление вывода команд в скрипте
Стандартное начало любого bat-файла: без этой строки консоль будет печатать каждую выполняемую команду.
@ECHO OFF
Символ @ перед ECHO скрывает и саму команду ECHO OFF, а не только последующие.
Вывод текстового сообщения
Информировать пользователя о ходе выполнения скрипта или напечатать результат операции.
ECHO Резервная копия создана успешно.
Строка будет напечатана в консоли как есть, без кавычек.
Вывод значения переменной окружения
Быстро проверить, какое значение хранит переменная в текущем сеансе.
SET BACKUP_PATH=D:\backup ECHO Путь для резервных копий: %BACKUP_PATH%
Команда подставит значение переменной и выведет полную строку.
Запись строки в файл
Создать текстовый файл с одной строкой или перезаписать существующий.
ECHO Начало лога > C:\logs\deploy.log
Если файл существует — он будет перезаписан. Если нет — создан.
Добавление строк в существующий файл (лог)
В скрипте развёртывания или резервного копирования удобно добавлять строки в лог без перезаписи.
ECHO [%DATE% %TIME%] Шаг 1 выполнен >> C:\logs\deploy.log ECHO [%DATE% %TIME%] Шаг 2 выполнен >> C:\logs\deploy.log
Каждая строка добавляется в конец файла с временной меткой из системных переменных.
Вывод пустой строки
Разделить блоки вывода в консоли для читаемости — точка без пробела после ECHO.
ECHO Блок 1 завершён. ECHO. ECHO Начало блока 2...
Важно: ECHO [пробел] не даст пустую строку — нужна именно точка без пробела.
Создание многострочного файла
Сгенерировать простой конфигурационный файл или шаблон прямо из скрипта.
@ECHO OFF ECHO [settings] > config.ini ECHO timeout=30 >> config.ini ECHO retries=3 >> config.ini
После выполнения скрипта в текущей папке появится файл config.ini с тремя строками.
Проверка текущего статуса ECHO
Узнать, в каком режиме сейчас работает консоль — ON или OFF.
ECHO
Без параметров команда выводит ECHO включено или ECHO выключено.
Частые ошибки и решения
| Ошибка / симптом | Причина | Решение |
|---|---|---|
Пустая строка не выводится через ECHO (с пробелом) | CMD интерпретирует ECHO [пробел] как команду с пустым параметром, а не пустую строку | Использовать ECHO. — точку без пробела |
| Вывод содержит лишние пробелы в конце строки | Пробел между ECHO и текстом входит в выводимую строку | Написать текст сразу после пробела; для точного контроля — убрать лишние пробелы |
Команды видны в консоли несмотря на ECHO OFF | Строка ECHO OFF написана без @ в начале | Заменить на @ECHO OFF |
| Файл перезаписывается каждый раз | Использован > вместо >> | Для добавления в конец использовать >> |
Переменная выводится как %VAR%, а не её значение | Скрипт запущен с SETLOCAL ENABLEDELAYEDEXPANSION, но используются % вместо ! | В блоках с отложенным расширением использовать !VAR! |
Когда применять, а когда нет
ECHO незаменима в bat/cmd-сценариях для информирования пользователя и ведения лога. Её основное ограничение — нет встроенного форматирования (цвет, выравнивание); для цветного вывода используйте COLOR или PowerShell. В PowerShell аналоги: Write-Host для вывода в консоль (с поддержкой цвета) и Write-Output для передачи объектов по конвейеру. Для записи в файл в PowerShell предпочтительнее Add-Content или Out-File, так как они корректно обрабатывают кодировку.
FAQ
Почему ECHO. выводит пустую строку, а ECHO с пробелом — нет?
CMD обрабатывает ECHO. как специальный синтаксис для пустой строки. Пробел после ECHO интерпретируется как разделитель перед параметром, и если параметр пустой — команда показывает статус ON/OFF.
Как вывести строку, которая содержит символ >?
Экранируйте символ символом ^: ECHO 5 ^> 3 — верно. Без экранирования > интерпретируется как перенаправление вывода.
Как записать вывод команды в файл вместе с текстом ECHO?
Используйте перенаправление: ECHO Список файлов: > report.txt && dir >> report.txt. Первая строка создаёт файл, вторая добавляет результат dir.
Влияет ли @ECHO OFF на вывод самой команды ECHO?
Символ @ подавляет отображение только той строки, перед которой стоит. @ECHO OFF скрывает и саму строку команды, и все последующие. Без @ строка ECHO OFF всё равно будет напечатана.
Как вывести текст без перевода строки?
В стандартном CMD это невозможно напрямую. Альтернатива — использовать set /p "=текст" < nul: эта конструкция выводит строку без символа новой строки в конце.
Можно ли использовать ECHO внутри блока FOR или IF?
Да, без ограничений. ECHO работает в любом блоке CMD-скрипта. При использовании внутри скобок блока FOR следите за экранированием специальных символов через ^.


