Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Пользователь


Сообщения: 148
Благодарности: 39

Профиль | Сайт | Отправить PM | Цитировать


Цитата amel27:
п.4 уже решен: »
Well Gracias Почитаю.

Цитата amel27:
п.1 можно решить помещением BackSpace в файл »
Спасибо, так и сделали. А потом обернули все это в функцию печати разным цветом в одной строке.
Частично не дописал демо-режим (хотел цветовую палитру - видимо, когда дописал функционал - заснул ).
Рабочий прототип с оптимизацией под скорость:

Код: Выделить весь код
@echo off
:: Цветной вывод в консоли
:: Автора: Dragokas and FraidZZ
:: Часть кода (получение служебного символа BackSpace 0x08) заимствована у jeb (dostips.com)

:: Демонстрация работы с функцией окрашивания текста в консоли

:: Эти 6 строк оставляем как есть (это часть функции цвета - Инициализация)
  SetLocal
  md "%temp%\_ColorText" 2>nul 
  pushd "%temp%\_ColorText"
  if %errorlevel%==0 del /F /A /Q *.*
  set LastColorText=Default
  for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%A in (1) do rem"') do set "DEL=%%a"& <nul set /p "x=%%a">Default

:: Настраиваю консоль по вкусу: по-шире - параметр cols. Высоту по-уже - параметр lines.
mode con cols=100 lines=40
Color 17
echo Выше по коду командой Color настраиваем цвет вывода консольных команд по-умолчанию.
echo Справка: Color /?
echo 17 - это белый шрифт на синем фоне.
echo.
 
:: Концевой пробел и спецсимволы запрещены
Call :ColorText 0B "Мой текст ярко-голубым цветом на черном фоне))"
Call :ColorText 0D " Печатаю в этой же строке розовым цветом"
Call :ColorText 0A ". Зеленым"
echo.

:: Однострочная многоцветная команда
Call :ColorText 0C "Каждый" 06 " охотник" 0E " желает" 0A " знать" 0B " где" 09 " сидит" 03 " фазан"

:: echo. - это переход на новую строку.
echo.&echo.
Call :ColorText 4B "Демонстрация завершена"
echo.&echo.
Call :ColorText 0E "Вывожу справку"
echo.&echo.

:: Это Вам не нужно и все, что ниже для работы функции тоже не нужно (кроме самой функции :ColorText, естественно :)
for /f "delims=] tokens=1*" %%a in ('color /?^| find /n /v ""^| findstr /R "\[[123456789]\]"') do echo.%%b
echo.


::Эти последние строки - служебные (не трогать!!!)
popd
::rd /s /q "%temp%\_ColorText" 2>nul
pause>nul
goto :eof


:ColorText
  :: Функция печати цветного текста
  :: %1-вх.параметр - Цвет в формате HEX
  :: %2-вх.параметр - Текст в цвете
  :: Концевой пробел, одиночная концевая точка, знаки \?:*"<>| не могут быть использованы в качестве текста
  ren "%LastColorText%" "%~2" 2>nul
  set "LastColorText=%~2"
  findstr /V /a:%~1 "Like color text? Just ask Dragokas and FraidZZ how it possible :)" "%~2*" 2>nul
  if "%~3"=="" Exit /B
shift& shift& goto ColorText

-------
Alex Dragokas

Это сообщение посчитали полезным следующие участники:

Отправлено: 22:31, 13-08-2013 | #7