Тема: CMD/BAT: Вывод разноцветного текста
Предлагаю к рассмотрению две функции, основанные на базе утилиты findstr, которые позволяют выводить текст заданного цвета:
:write
:: Вывести цветную надпись без перевода строки
:: %1 - цвет
:: %2 - текст надписи
:: %3 - флаг, любое значение, если нужно двоеточие в конце строки
:writeLn
:: Вывести цветную надпись с переводом строки
:: %1 - цвет
:: %2 - текст надписи
:: %3 - флаг, любое значение, если нужно двоеточие в конце строки
Пример использования:
call :writeLn 2C " Hello, World "
Выведет "Hello, World" красным цветом на зеленом фоне.
Особенности:
1. Цвет задается аналогично команде color, т.е. цвет фона и текста двумя шестнадцатеричными цифрами.
2. Учитывая то, что цветным выводится имя файла, далеко не любой текст можно вывести этим методом. Текст должен быть корректным с точки зрения составления имени файла.
3. В каталоге %TEMP% создается и затем удаляется временный подкаталог.
4. В конце строки можно вывести двоеточие, хотя оно не может присутствовать в имени файла. Для этого надо установить любое значение в качестве третьего параметра функции.
5. Пробелы в конце строки съедаются, в начале строки сохраняются.
6. В строках длинной 78 и 79 символов при выводе в конце может добавиться двоеточие и точка, т.е. если строка подходит к концу экрана.
Пример с двоеточием:
call :write 0F "Random" 1
call :writeLn 0E " %random%"
В таком примере:
call :writeLn 0A "123456789012345678901234567890123456789012345678901234567890123456789012345678"
В конце строки будет выведено двоеточие зеленого цвета и точка обычного цвета.
Полноценный пример и реализация функций в аттаче, т.к. имеются непечатные символы.