Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #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.
Ответить с цитированием
  #2 (permalink)  
Старый 31.08.2014, 15:39
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

devote, чёт не фурыкает, пока не понял в чём причина,
можешь приложить готовый батник, который у тебя работает, с нужным chcp и pause, чтобы просто запустить и посмотреть, что вот оно
Ответить с цитированием
  #3 (permalink)  
Старый 31.08.2014, 18:54
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

bes,
приложил тест

PS. хотя у меня там в тесте кодовая страница 866 стоит, но и 1251 работает норм. Это уж кому что.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine

Последний раз редактировалось devote, 31.08.2014 в 19:05.
Ответить с цитированием
  #4 (permalink)  
Старый 31.08.2014, 19:24
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

обнаружил-таки в чём причина, антивирус по-тихому блокировал исполнение, запустил от имени администратора, только тогда предложил варианты действий
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема со scroll Chrome Элементы интерфейса 2 21.10.2013 14:46
прогкрутка к якорям cOAPerator Общие вопросы Javascript 20 27.08.2013 03:30
нужно заставить одновременно работать слайдер и модальное окно обратной связи kvant355 Javascript под браузер 3 22.07.2013 16:34
Выравнять три дива в одной строке debugx (X)HTML/CSS 9 06.10.2011 12:03