Тема: CMD/BAT: Управляющие последовательности ANSI/ECMA-48
Дополним тему CMD/BAT: Вывод разноцветного текста, точнее предложим совершенно новое и куда более продвинутое решение.
О чем идет речь, подробнее читайте тут - Управляющие последовательности ANSI
Данная методика работает начиная с Windows 10.

Для управления выводом текста в консоль используются специальные ESC-коды. Выглядят они так:
ESC[<параметры><буква-команда>ESC[ — признак начала управляющей последовательности. Непечатный символ с кодом 27 (U+001B). Набирается посредством Alt+27 или Alt+027, на экране выглядит как вопросик в квадрате или иначе, в зависимости от редактора.
<параметры> — цифры (иногда с ; ), указывают режим или количество.
<буква-команда> — финализирующий символ, указывающий какое именно действие.
Так как символ ESC непечатный, то не всегда удастся вставить код в сообщение, примеры надо качать из вложений.
Команда m задает цвет текста и фона (цвет задается или из палитры 16, или из палитры 256, или по RGB), различные начертания шрифта (подчеркнутый, жирный).
Цвета из палитры 16
Цвета из палитры 256
ESC[38;5;<n>m → цвет текста
ESC[48;5;<n>m → цвет фона
где <n> от 0 до 255.
0–7: базовые цвета
8–15: яркие
16–231: 6×6×6 RGB-куб
232–255: градации серого
Полноцветный (TrueColor, 24-бит)
ESC[38;2;R;G;Bm → текст (R,G,B = 0–255)
ESC[48;2;R;G;Bm → фон
Пример:
echo [38;2;255;128;0mОранжевый текст[0mОсновные атрибуты
ESC[0m → сброс атрибутов
ESC[1m → жирный / яркий цвет
ESC[2m → тусклый
ESC[3m → курсив (обычно игнорируется)
ESC[4m → подчёркивание
ESC[5m → мигающий (обычно игнорируется)
ESC[7m → инверсия
ESC[8m → скрытый
ESC[9m → зачёркнутый
ESC[22m → отмена жирного/тусклого
ESC[24m → отмена подчёркивания
ESC[27m → отмена инверсии
ESC[30–37m → цвет текста
ESC[40–47m → цвет фона
ESC[90–97m → яркие цвета текста
ESC[100–107m → яркие цвета фона
ESC[38;5;#m → текст 256-цвет
ESC[48;5;#m → фон 256-цвет
ESC[38;2;R;G;Bm → текст TrueColor (24-бит)
ESC[48;2;R;G;Bm → фон TrueColor (24-бит)
Работает далеко не все...
Комбинирование
Можно комбинировать через ;. Например:
[4;31mподчёркнутый красный[0m
[7;33mжёлтый инверсный[0m
Сброс всех атрибутов
ESC[0m → сброс атрибутов
Очистка экрана
ESC[J → очистка экрана (по умолчанию от курсора до конца)
ESC[0J → от курсора до конца экрана
ESC[1J → от начала экрана до курсора
ESC[2J → весь экран
ESC[3J → весь экран + буфер (если поддерживается)
ESC[K → очистка строки (по умолчанию от курсора до конца)
ESC[0K → от курсора до конца строки
ESC[1K → от начала строки до курсора
ESC[2K → вся строка
Управление курсором
ESC[#A → вверх # строк
ESC[#B → вниз # строк
ESC[#C → вправо # колонок
ESC[#D → влево # колонок
ESC[#E → на начало строки, ниже на #
ESC[#F → на начало строки, выше на #
ESC[#G → в колонку #
ESC[H → курсор в левый верхний угол
ESC[#;#H → в строку;колонку (позиция курсора)
ESC[#;#f → то же самое (альтернативная форма)
ESC[s → сохранить позицию курсора
ESC[u → восстановить позицию курсора
ESC[?25l → скрыть курсор
ESC[?25h → показать курсор
ESC[6n → выводит текущее положение курсора в формате ^[[n;mR, где n — строка, m — столбец. Ответ попадает в поток ввода. Пока непонятно, как его считать...
Прокрутка
ESC[#S → прокрутить экран вверх на #
ESC[#T → прокрутить экран вниз на #
Пример:
@echo off
echo Очистка экрана: [2J
echo Красный текст: [31mHello[0m
echo Подчёркнутый: [4mText[0m
echo Инверсия: [7mInverted[0m
Более полная демка во вложении. Скрины демки:




