<?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: Вывод разноцветного текста]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=7944</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=7944&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «CMD/BAT: Вывод разноцветного текста».]]></description>
		<lastBuildDate>Mon, 01 Sep 2025 19:09:07 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: CMD/BAT: Вывод разноцветного текста]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162654#p162654</link>
			<description><![CDATA[<p>Более актуальный метод вывода разноцветного текста (и управление прочими параметрами вывода) описан тут - <a href="https://forum.script-coding.com/viewtopic.php?id=18484">CMD/BAT: Управляющие последовательности ANSI/ECMA-48</a></p>]]></description>
			<author><![CDATA[null@example.com (Arigato)]]></author>
			<pubDate>Mon, 01 Sep 2025 19:09:07 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162654#p162654</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Вывод разноцветного текста]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=76540#p76540</link>
			<description><![CDATA[<p>В общем, в продолжении идеи. Несколько кривоватый батник:<br /></p><div class="codebox"><pre><code>@echo off
  setlocal enabledelayedexpansion
    for /F &quot;tokens=1,2 delims=#&quot; %%i in (^
      &#039;&quot;prompt #$H#$E# &amp; echo on &amp; for %%j in (1) do rem&quot;&#039;^
    ) do (
      set &quot;n=%%i&quot;
    )
    set /p .=.&lt;nul&gt;foo
    call:writeln 0d &quot;colored string&quot;
    del /f /q foo
  endlocal
exit /b

:writeln
  set &quot;regex=%~2&quot; !
  set &quot;regex=!regex:&quot;=\&quot;!&quot;
  findstr /a:%1 /prc:&quot;\.&quot; &quot;!regex!\..\foo&quot; nul
  set /p .=%n%%n%%n%%n%%n%%n%%n%%n%%n%&lt;nul
exit /b</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (greg zakharov)]]></author>
			<pubDate>Sun, 27 Oct 2013 14:23:49 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=76540#p76540</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Вывод разноцветного текста]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=76537#p76537</link>
			<description><![CDATA[<p>Из логики сценария следует, что всякий раз во временной папке текущего профиля создается временный файл, имя которого равно искомой строке, верно? При этом его содержимое - символ &quot;точка&quot;. Здесь то и возникает вопрос для чего делать это постоянно? Допустим есть у нас некоторый файл, например, foo.txt, мы точно знаем что в нем есть символ точки, тогда:<br /></p><div class="codebox"><pre><code>C:\&gt;findstr /p /a:0d /c:&quot;.&quot; &quot;colored text\..\E:\foo.txt&quot; nul
colored text\..\E:\foo.txt:some text.</code></pre></div><p>Что имеем в итоге? Цветной текст &quot;colored text\..\E:\foo.txt:&quot; и прочий мусор. То есть, если будет найден способ отбрасывать прочий вывод после &quot;colored text&quot;, а также возможные дубликаты строк, то:<br />1)можно запихать символ точки в конец самого батника и не плодить временные файлы<br />2)возрастет скорость работы самого батника<br />3)отпадает надобность в создании кучи функций<br />В общем, надеюсь, читающим сей пост, суть идеи ясна.</p>]]></description>
			<author><![CDATA[null@example.com (greg zakharov)]]></author>
			<pubDate>Sun, 27 Oct 2013 12:48:05 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=76537#p76537</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Вывод разноцветного текста]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=76377#p76377</link>
			<description><![CDATA[<p>Всё-таки <a href="http://forum.script-coding.com/viewtopic.php?id=8805">попало</a>, будут ли замечания?</p><p>Задержка связана с тем, что при одновременном запуске большого числа экземпляров всё-таки возникали накладки с созданием временных папок. Теперь, на другом компьютере, это не воспроизводится.<br />Вот я и гадаю, то ли это связано, с плохим охлаждением того компьютера, из-за чего он при больших нагрузках давал сбои (тогда ничего срашного) или дело в разной файловой системе (FAT и NTFS). Пока перепроверить на старом компьютере руки не доходят (надо чистить, смазывать, возникла необходимость переустанавливать систему).<br />Единственное место в котором мог возникнуть такой сбой:<br /></p><div class="codebox"><pre><code>  md &quot;%tempFolder%&quot; 2&gt;nul || goto write1</code></pre></div><p>но чисто умозрительно его здесь быть не должно.<br />Добавил пока как есть, если что, можно будет поправить.</p>]]></description>
			<author><![CDATA[null@example.com (wisgest)]]></author>
			<pubDate>Wed, 23 Oct 2013 19:23:36 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=76377#p76377</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Вывод разноцветного текста]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=76223#p76223</link>
			<description><![CDATA[<p>В коллекцию решение так и не попало...</p>]]></description>
			<author><![CDATA[null@example.com (Arigato)]]></author>
			<pubDate>Sun, 20 Oct 2013 20:30:38 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=76223#p76223</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Вывод разноцветного текста]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=69572#p69572</link>
			<description><![CDATA[<p>С любыми. Дело не в версии ОС.</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Sat, 16 Feb 2013 17:27:31 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=69572#p69572</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Вывод разноцветного текста]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=69566#p69566</link>
			<description><![CDATA[<p>Пардону прошу, а с какими версиями систем совместимо данное изыскание?</p>]]></description>
			<author><![CDATA[null@example.com (UNDYING)]]></author>
			<pubDate>Sat, 16 Feb 2013 15:51:35 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=69566#p69566</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Вывод разноцветного текста]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=68385#p68385</link>
			<description><![CDATA[<p>Идея верна</p><p>а так не забывайте ВВС<br />%system32%\system32\ansi.sys</p>]]></description>
			<author><![CDATA[null@example.com (smaharbA)]]></author>
			<pubDate>Thu, 10 Jan 2013 15:13:11 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=68385#p68385</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Вывод разноцветного текста]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=68219#p68219</link>
			<description><![CDATA[<p>Я знаю, что написано, но воспроизвести отбрасывание «лишних» знаков, как и метки с пробелами, что-то не получается.</p>]]></description>
			<author><![CDATA[null@example.com (wisgest)]]></author>
			<pubDate>Sun, 06 Jan 2013 21:46:55 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=68219#p68219</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Вывод разноцветного текста]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=68216#p68216</link>
			<description><![CDATA[<p>В XP&#039;шной ntcmds.chm написано:</p><div class="quotebox"><blockquote><p><strong>Использование допустимых значений метки </strong><br />Метка может включать пробелы, но не может включать другие разделители, такие как точка с запятой или знак равенства. <span class="bbu">В команде goto используются только первые восемь знаков метки.</span> Например, следующие метки эквивалентны и рассматриваются как :hithere0: </p><p>:hithere0</p><p>:hithere01</p><p>:hithere02</p><p><strong>Совпадение меток в пакетных программах</strong> <br />Метка, заданная в команде, должна соответствовать метке в тексте пакетной программы. Метка в пакетной программе должна начинаться с двоеточия (:). В Windows XP строка пакетной программы, начинающаяся с двоеточия (:), опознается как метка и не обрабатывается как команда. Если строка начинается с двоеточия, все присутствующие в ней команды обработаны не будут. Если в пакетном файле не содержится заданной метки, программа будет остановлена, а на экран будет выведено следующее сообщение:</p><p><em>Метка не найдена.</em></p></blockquote></div>]]></description>
			<author><![CDATA[null@example.com (Arigato)]]></author>
			<pubDate>Sun, 06 Jan 2013 20:51:57 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=68216#p68216</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Вывод разноцветного текста]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=68210#p68210</link>
			<description><![CDATA[<div class="quotebox"><cite>Arigato пишет:</cite><blockquote><p>Ну а если вместо x использовать random:<br />Проблем вроде бы не должно быть.</p></blockquote></div><p>Скорее всего, не должно; просто лично у меня предубеждение против повторных обращений при неудаче к датчику псевдослучайных чисел, т.к. чисто теоретически при определённых условиях может произойти его зацикливание.</p><div class="quotebox"><cite>Arigato пишет:</cite><blockquote><p>Ограничение длинны метки в 8 символов еще действует или это было в старых версиях cmd?</p></blockquote></div><p>В Windows XP такого ограничения нет даже при DISABLEEXTENSIONS, было ли оно в более ранних версиях CMD.EXE — не знаю, но почему-то сомневаюсь. Более вероятно, что это ограничение было в COMMAND.COM.</p>]]></description>
			<author><![CDATA[null@example.com (wisgest)]]></author>
			<pubDate>Sun, 06 Jan 2013 15:26:52 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=68210#p68210</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Вывод разноцветного текста]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=68201#p68201</link>
			<description><![CDATA[<p>Неплохо. Ну а если вместо x использовать random:</p><div class="codebox"><pre><code>:write
:: Вывести цветную надпись без перевода строки
:: %1 - цвет
:: %2 - текст надписи
:: %3 - флаг, любое значение, если нужно двоеточие в конце строки
  setlocal
  :write1
  set &quot;tempFolder=%TEMP%\%~n0.%time:~-2%.%random%&quot;
  md &quot;%tempFolder%&quot; 2&gt;nul || goto write1
  pushd %tempFolder%
  set /p .=.&lt;nul&gt;&quot;%~2&quot;
  findstr /a:%~1 /c:&quot;.&quot; /s &quot;%~2&quot;
  if &quot;%~3&quot;==&quot;&quot; (set /p .=  &lt;nul) else set /p .= &lt;nul
  popd
  rd /s /q &quot;%tempFolder%&quot;
endlocal &amp; exit /b</code></pre></div><p>Проблем вроде бы не должно быть.</p><p>P.S. На счет меток хотелось бы уточнить. Метка &quot;write.TRY_MD&quot; - 12 символов. Ограничение длинны метки в 8 символов еще действует или это было в старых версиях cmd?</p>]]></description>
			<author><![CDATA[null@example.com (Arigato)]]></author>
			<pubDate>Sun, 06 Jan 2013 10:26:27 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=68201#p68201</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Вывод разноцветного текста]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=68190#p68190</link>
			<description><![CDATA[<p>Также схему<br /></p><div class="codebox"><pre><code>  pushd %TEMP%
  set tempFolder=...
  md &quot;%tempFolder%&quot;
  cd &quot;%tempFolder%&quot;
...
  cd ..
  rd /s /q &quot;%tempFolder%&quot;
  popd</code></pre></div><p>можно сократить на два шага:<br /></p><div class="codebox"><pre><code>  set tempFolder=%TEMP%\...
  md &quot;%tempFolder%&quot;
  pushd &quot;%tempFolder%&quot;
...
  popd
  rd /s /q &quot;%tempFolder%&quot;</code></pre></div><p>В итоге, с учётом сказаного в #6,<br />процедуру <em>write</em> можно переписать в виде<br /></p><div class="codebox"><pre><code>:write
:: Вывести цветную надпись без перевода строки
:: %1 - цвет
:: %2 - текст надписи
:: %3 - флаг, любое значение, если нужно двоеточие в конце строки
  setlocal
  set x=0
  :write.TRY_MD
  set &quot;tempFolder=%TEMP%\%~n0.%x%%time:~-2%&quot;
  md &quot;%tempFolder%&quot; 2&gt;nul || (set /a &quot;x+=1&quot; &amp; goto write.TRY_MD)
  pushd &quot;%tempFolder%&quot;
  set /p .=.&lt;nul&gt;&quot;%~2&quot;
  findstr /a:%~1 /c:&quot;.&quot; /s &quot;%~2&quot;
  if &quot;%~3&quot;==&quot;&quot; (set /p .=  &lt;nul) else set /p .= &lt;nul
  popd
  rd /s /q &quot;%tempFolder%&quot;
endlocal &amp; exit /b
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (wisgest)]]></author>
			<pubDate>Sat, 05 Jan 2013 23:26:15 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=68190#p68190</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Вывод разноцветного текста]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=68189#p68189</link>
			<description><![CDATA[<div class="codebox"><pre><code>  set tempFolder=~%time:~6,2%%time:~9,2%_%random%.tmp
  md &quot;%tempFolder%&quot;</code></pre></div><p>всё-таки не поможет при одновременном запуске нескольких экземпляров, т.к <a href="http://forum.script-coding.com/viewtopic.php?id=6256">ни %RANDOM%, ни %TIME% не обеспечивают неповторяемость значений</a>.<br />Лично я переписал бы это на пару строк длиннее, зато более непробиваемо:<br /></p><div class="codebox"><pre><code>  set x=0
  :write.TRY_MD
  set &quot;tempFolder=%~n0.%x%%time:~-2%&quot;
  md &quot;%tempFolder%&quot; 2&gt;nul
  if errorlevel 1 set /a &quot;x+=1&quot; &amp; goto write.TRY_MD</code></pre></div><p>(последние две строки можно переписать короче:<br /></p><div class="codebox"><pre><code>  md &quot;%tempFolder%&quot; 2&gt;nul || (set /a &quot;x+=1&quot; &amp; goto write.TRY_MD)</code></pre></div><p>)</p><br /><p>Для проверки можно попробовать запустить командый файл в нескольких окнах одновременно<br /></p><div class="codebox"><pre><code>for /l %i in (1 1 10) do @start &quot;%i&quot; cmd /c color.cmd</code></pre></div><p>для обоих случаев.</p>]]></description>
			<author><![CDATA[null@example.com (wisgest)]]></author>
			<pubDate>Sat, 05 Jan 2013 19:58:29 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=68189#p68189</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Вывод разноцветного текста]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=68186#p68186</link>
			<description><![CDATA[<p>Переделал и обновил первый пост (аттач).</p>]]></description>
			<author><![CDATA[null@example.com (Arigato)]]></author>
			<pubDate>Sat, 05 Jan 2013 17:43:52 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=68186#p68186</guid>
		</item>
	</channel>
</rss>
