Показать сообщение отдельно
  #1 (permalink)  
Старый 31.08.2014, 00:04
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Цветной текст в консоли Windows
Привет All!

В один из рабочих дней, сидя на работе нужно было написать один скриптик в .cmd (командном) файле. Собственно скрипт то я написал, но захотелось добавить изюминки в выводе текста. И вот оно:
# Печатает текст с необходимым цветом без перевода каретки на новую строку
# Синтакс:
#   call:write цветHEX "выводимый текст"
:write (
  rem # Возможно первым аргументом передали текст
  set arg1=%1
  set arg2=%2
  if "%arg1:~0,1%%arg1:~-1%"=="""" (
    rem # Если цвет не указали просто выводим с дефолтным цветом
    0<nul set /p"=%arg1:~1,-1%"
    exit /b
  )
  rem # Удаляем начальные и конечные кавычки в тексте
  set arg2=%arg2:~1,-1%~

  rem # Заменяем продублированные кавычки в одни
  set arg2=%arg2:""="%

  rem "# Заменяем двойные кавычки другими
  set arg2=%arg2:"=`%

  echo off
  0<nul set /p .=.>"%arg2%"
  findstr /v /a:%arg1% /R "^$" "%arg2%" nul
  set /p .=   <nul
  del "%arg2%" > nul 2>&1
  exit /b
)
# Печатает текст с необходимым цветом с переводом каретки на новую строку
# Синтакс:
#   call:writeln цветHEX "выводимый текст"
:writeln (
  call:write %1 %2
  echo.
  exit /b
)
Этот скрипт выводит текст в консоль винды с нужным нам цветом, использование очень простое, вызов происходит так:
call:writeln 02 "Привет мир!"
Данная команда выведет текст темно-зеленого цвета и переведет каретку на новую строку. Либо:
call:write 02 "Привет мир!"
Тоже выведет темно-зеленого но каретку оставит в конце строки.

Цвета в консоле стандартные от 00 до 0F то-есть всего 16 цветов.

PS. На форуме конечно некоторые символы не печатаются, то есть скрипт будет работать не правильно из-за того что строка 25 в коде деформирована... Там между равенством и скобкой < должно быть не только три пробела а символы удаления, то есть в символьных кодах HEX: 080808202020080808

Смотрите вложение!

PPSSS. Файлы .txt переименуйте в .cmd/.bat
Вложения:
Тип файла: txt text-color.txt (936 байт, 14 просмотров)
Тип файла: txt test.txt (1.1 Кб, 10 просмотров)

Последний раз редактировалось devote, 31.08.2014 в 18:54.
Ответить с цитированием