<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; CMD/BAT: Управляющие последовательности ANSI/ECMA-48]]></title>
		<link>http://forum.script-coding.com/viewtopic.php?id=18484</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=18484&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «CMD/BAT: Управляющие последовательности ANSI/ECMA-48».]]></description>
		<lastBuildDate>Fri, 05 Sep 2025 09:31:45 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: CMD/BAT: Управляющие последовательности ANSI/ECMA-48]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=162680#p162680</link>
			<description><![CDATA[<p>Более структурированное описание см. здесь - <a href="http://forum.script-coding.com/viewtopic.php?id=18490">CMD/BAT: Управляющие последовательности ANSI/ECMA-48 (цвет и прочее)</a></p>]]></description>
			<author><![CDATA[null@example.com (Arigato)]]></author>
			<pubDate>Fri, 05 Sep 2025 09:31:45 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=162680#p162680</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Управляющие последовательности ANSI/ECMA-48]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=162659#p162659</link>
			<description><![CDATA[<p><strong>Применяем CSI-коды в приглашении командной строки</strong></p><p>CSI-коды отлично работают в промпте. Вот пример батника, который поменяет цвет приглашения на ярко-желтый:</p><div class="codebox"><pre><code>@echo off

:: Получаем префикс CSI = ESC + [
for /f &quot;delims=&quot; %%a in (&#039;echo prompt $E[^| cmd /q /d /k&#039;) do set &quot;CSI=%%a&quot;

:: Ярко-желтое приглашение командной строки
prompt %CSI%93m$P$G%CSI%0m
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Arigato)]]></author>
			<pubDate>Tue, 02 Sep 2025 09:13:57 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=162659#p162659</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Управляющие последовательности ANSI/ECMA-48]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=162658#p162658</link>
			<description><![CDATA[<p>Развиваем эту идею дальше. Можно программно получить префикс для <a href="https://ru.wikipedia.org/wiki/%D0%A3%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D1%8F%D1%8E%D1%89%D0%B8%D0%B5_%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D0%B8_ANSI#CSI-%D0%BA%D0%BE%D0%B4%D1%8B">CSI-кодов</a>, чтобы не использовать в коде непечатные символы. Вот код для получения CSI-префикса:</p><div class="codebox"><pre><code>:: Получаем префикс CSI = ESC + [
for /f &quot;delims=&quot; %%a in (&#039;echo prompt $E[^| cmd /q /d /k&#039;) do set &quot;CSI=%%a&quot;</code></pre></div><p>Теперь спокойно можно копировать код прямо на форум, так как непечатных символов больше нет. Вот код демонстрационного примера (копируйте прямо от сюда, больше нет нужны прикреплять пример в качестве вложения):</p><div class="codebox"><pre><code>@echo off
setlocal enabledelayedexpansion

:: Получаем префикс CSI = ESC + [
for /f &quot;delims=&quot; %%a in (&#039;echo prompt $E[^| cmd /q /d /k&#039;) do set &quot;CSI=%%a&quot;

echo Пример использования управляющих последовательностей
echo %CSI%91mКрасный текст%CSI%0m
echo %CSI%44mСиний фон%CSI%0m
echo %CSI%42;96mГолубой на зеленом%CSI%0m
echo %CSI%7mИнверсный%CSI%27m
echo %CSI%4mПодчеркнутый%CSI%24m

</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Arigato)]]></author>
			<pubDate>Tue, 02 Sep 2025 09:06:03 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=162658#p162658</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Управляющие последовательности ANSI/ECMA-48]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=162655#p162655</link>
			<description><![CDATA[<p>Это демка из стартового скриншота.</p><p>Код:</p><div class="codebox"><pre><code>@echo off
setlocal enabledelayedexpansion

:: Очистка экрана
echo [2J[H

:: Приветствие
echo [1;32mДобро пожаловать в DEMO ANSI![0m
echo.

:: Несколько сообщений разными цветами
echo [33mЭто сообщение жёлтым[0m
echo [34mЭто сообщение синим[0m
echo [31mЭто сообщение красным[0m
echo.

:: Подчёркнутые строки
echo [4;36mПодчёркнутый текст циан[0m
echo [4;35mПодчёркнутый текст магента[0m
echo.

:: Инверсия (swap foreground/background)
echo [7;33mИнверсное сообщение жёлтое[0m
echo [7;32mИнверсное сообщение зелёное[0m
echo.

:: Комбинация эффектов
echo [1;4;31mЖирный + подчёркнутый + красный[0m
echo [7;34mИнверсное + синий[0m

echo.
echo Нажмите любую клавишу, чтобы выйти...
pause &gt;nul
</code></pre></div><p>Но надо качать из вложения из-за непечатных ESC-символов:</p>]]></description>
			<author><![CDATA[null@example.com (Arigato)]]></author>
			<pubDate>Mon, 01 Sep 2025 19:14:29 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=162655#p162655</guid>
		</item>
		<item>
			<title><![CDATA[CMD/BAT: Управляющие последовательности ANSI/ECMA-48]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=162653#p162653</link>
			<description><![CDATA[<p>Дополним тему <a href="https://forum.script-coding.com/viewtopic.php?id=7944">CMD/BAT: Вывод разноцветного текста</a>, точнее предложим совершенно новое и куда более продвинутое решение.</p><p>О чем идет речь, подробнее читайте тут - <a href="https://ru.wikipedia.org/wiki/%D0%A3%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D1%8F%D1%8E%D1%89%D0%B8%D0%B5_%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D0%B8_ANSI">Управляющие последовательности ANSI</a></p><p>Данная методика работает начиная с Windows 10.</p><p><span class="postimg"><img src="https://i.ibb.co/MkKwQgnL/2.png" alt="https://i.ibb.co/MkKwQgnL/2.png" /></span></p><p>Для управления выводом текста в консоль используются специальные ESC-коды. Выглядят они так:</p><div class="codebox"><pre><code>ESC[&lt;параметры&gt;&lt;буква-команда&gt;</code></pre></div><p>ESC[ — признак начала управляющей последовательности. Непечатный символ с кодом 27 (U+001B). Набирается посредством Alt+27 или Alt+027, на экране выглядит как вопросик в квадрате или иначе, в зависимости от редактора.<br />&lt;параметры&gt; — цифры (иногда с ; ), указывают режим или количество.<br />&lt;буква-команда&gt; — финализирующий символ, указывающий какое именно действие.</p><p>Так как символ ESC непечатный, то не всегда удастся вставить код в сообщение, примеры надо качать из вложений.</p><p>Команда m задает цвет текста и фона (цвет задается или из палитры 16, или из палитры 256, или по RGB), различные начертания шрифта (подчеркнутый, жирный).</p><p><strong>Цвета из палитры 16</strong></p><p><a href="https://ibb.co/fdwDRVqf"><span class="postimg"><img src="https://i.ibb.co/yFj4Tmdt/1.png" alt="https://i.ibb.co/yFj4Tmdt/1.png" /></span></a></p><p><strong>Цвета из палитры 256</strong></p><p>ESC[38;5;&lt;n&gt;m&nbsp; &nbsp;→ цвет текста<br />ESC[48;5;&lt;n&gt;m&nbsp; &nbsp;→ цвет фона</p><p>где &lt;n&gt; от 0 до 255.<br />0–7: базовые цвета<br />8–15: яркие<br />16–231: 6×6×6 RGB-куб<br />232–255: градации серого</p><p><strong>Полноцветный (TrueColor, 24-бит)</strong></p><p>ESC[38;2;R;G;Bm&nbsp; &nbsp;→ текст (R,G,B = 0–255)<br />ESC[48;2;R;G;Bm&nbsp; &nbsp;→ фон</p><p>Пример:<br /></p><div class="codebox"><pre><code>echo [38;2;255;128;0mОранжевый текст[0m</code></pre></div><p><strong>Основные атрибуты</strong></p><p>ESC[0m&nbsp; &nbsp;→ сброс атрибутов<br />ESC[1m&nbsp; &nbsp;→ жирный / яркий цвет<br />ESC[2m&nbsp; &nbsp;→ тусклый<br />ESC[3m&nbsp; &nbsp;→ курсив (обычно игнорируется)<br />ESC[4m&nbsp; &nbsp;→ подчёркивание<br />ESC[5m&nbsp; &nbsp;→ мигающий (обычно игнорируется)<br />ESC[7m&nbsp; &nbsp;→ инверсия<br />ESC[8m&nbsp; &nbsp;→ скрытый<br />ESC[9m&nbsp; &nbsp;→ зачёркнутый<br />ESC[22m&nbsp; → отмена жирного/тусклого<br />ESC[24m&nbsp; → отмена подчёркивания<br />ESC[27m&nbsp; → отмена инверсии<br />ESC[30–37m&nbsp; → цвет текста<br />ESC[40–47m&nbsp; → цвет фона<br />ESC[90–97m&nbsp; → яркие цвета текста<br />ESC[100–107m → яркие цвета фона<br />ESC[38;5;#m&nbsp; → текст 256-цвет<br />ESC[48;5;#m&nbsp; → фон 256-цвет<br />ESC[38;2;R;G;Bm → текст TrueColor (24-бит)<br />ESC[48;2;R;G;Bm → фон TrueColor (24-бит)</p><p>Работает далеко не все...</p><p><strong>Комбинирование</strong></p><p>Можно комбинировать через ;. Например:</p><div class="codebox"><pre><code>[4;31mподчёркнутый красный[0m
[7;33mжёлтый инверсный[0m
</code></pre></div><p><strong>Сброс всех атрибутов</strong></p><p>ESC[0m&nbsp; &nbsp;→ сброс атрибутов</p><p><strong>Очистка экрана</strong></p><p>ESC[J&nbsp; &nbsp; → очистка экрана (по умолчанию от курсора до конца)<br />ESC[0J&nbsp; &nbsp;→ от курсора до конца экрана<br />ESC[1J&nbsp; &nbsp;→ от начала экрана до курсора<br />ESC[2J&nbsp; &nbsp;→ весь экран<br />ESC[3J&nbsp; &nbsp;→ весь экран + буфер (если поддерживается)</p><p>ESC[K&nbsp; &nbsp; → очистка строки (по умолчанию от курсора до конца)<br />ESC[0K&nbsp; &nbsp;→ от курсора до конца строки<br />ESC[1K&nbsp; &nbsp;→ от начала строки до курсора<br />ESC[2K&nbsp; &nbsp;→ вся строка</p><p><strong>Управление курсором</strong></p><p>ESC[#A&nbsp; &nbsp;→ вверх # строк<br />ESC[#B&nbsp; &nbsp;→ вниз # строк<br />ESC[#C&nbsp; &nbsp;→ вправо # колонок<br />ESC[#D&nbsp; &nbsp;→ влево # колонок<br />ESC[#E&nbsp; &nbsp;→ на начало строки, ниже на #<br />ESC[#F&nbsp; &nbsp;→ на начало строки, выше на #<br />ESC[#G&nbsp; &nbsp;→ в колонку #<br />ESC[H → курсор в левый верхний угол<br />ESC[#;#H → в строку;колонку (позиция курсора)<br />ESC[#;#f → то же самое (альтернативная форма)</p><p>ESC[s&nbsp; &nbsp; → сохранить позицию курсора<br />ESC[u&nbsp; &nbsp; → восстановить позицию курсора</p><p>ESC[?25l → скрыть курсор<br />ESC[?25h → показать курсор</p><p>ESC[6n&nbsp; &nbsp;→ выводит текущее положение курсора в формате ^[[n;mR, где n — строка, m — столбец. Ответ попадает в поток ввода. Пока непонятно, как его считать...</p><p><strong>Прокрутка</strong></p><p>ESC[#S&nbsp; &nbsp; → прокрутить экран вверх на #<br />ESC[#T&nbsp; &nbsp; → прокрутить экран вниз на #</p><p>Пример:</p><div class="codebox"><pre><code>@echo off
echo Очистка экрана: [2J
echo Красный текст: [31mHello[0m
echo Подчёркнутый: [4mText[0m
echo Инверсия: [7mInverted[0m
</code></pre></div><p>Более полная демка во вложении. Скрины демки:</p><p><a href="https://ibb.co/Vc2sYD8X"><span class="postimg"><img src="https://i.ibb.co/Vc2sYD8X/1.png" alt="https://i.ibb.co/Vc2sYD8X/1.png" /></span></a> <a href="https://ibb.co/TxG1N1fK"><span class="postimg"><img src="https://i.ibb.co/TxG1N1fK/3.png" alt="https://i.ibb.co/TxG1N1fK/3.png" /></span></a></p>]]></description>
			<author><![CDATA[null@example.com (Arigato)]]></author>
			<pubDate>Mon, 01 Sep 2025 19:05:58 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=162653#p162653</guid>
		</item>
	</channel>
</rss>
