Цветной текст в консоли Windows
Вложений: 2
Привет 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 |
devote, чёт не фурыкает, пока не понял в чём причина,
можешь приложить готовый батник, который у тебя работает, с нужным chcp и pause, чтобы просто запустить и посмотреть, что вот оно |
bes,
приложил тест PS. хотя у меня там в тесте кодовая страница 866 стоит, но и 1251 работает норм. Это уж кому что. |
обнаружил-таки в чём причина, антивирус по-тихому блокировал исполнение, запустил от имени администратора, только тогда предложил варианты действий
|
| Часовой пояс GMT +3, время: 23:07. |