Привет 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