Цвет текста в командном файле | nhutils

Описание

COLOR — Изменяет цвет текста и фона в окне командной строки для текущего сеанса.

Ansi colors

Итак, я хочу поменять все цвета в консоли, а не только текста и фона. Для начала посмотрим, что это за цвета. В linux и osx все просто — есть стандарт «ANSI Colors», который гласит, что если вывести в консоль определенную последовательность символов, то следующий за ней текст будет покрашен во все цвета радуги:

К сожалению, авторы windows данный стандарт не поддержали, но нечто похожее имеется — 16 цветов, которыми можно раскрашивать текст и фон. Простенькая программа на python показывает, как это выглядит:

from ctypes import *
windll.Kernel32.GetStdHandle.restype = c_ulong
h = windll.Kernel32.GetStdHandle(c_ulong(0xfffffff5))
for color in xrange(16):
    windll.Kernel32.SetConsoleTextAttribute(h, color)
    print "color {0}".format( color )

Цвета, мягко выражаясь, печальные. Особенно если сравнивать результаты с цветовой схемой по умолчанию в ubuntu:

Альтернативное решение – программа nhcolor

В итоге, пришлось написать решение, которое

  • может менять цвет текста в консоли по строкам
  • не ограничивает выводимый текст
  • не требует административных полномочий.

Итак, программа nhcolor имеет два варианта запуска.

Интрига

Радуемся новым цветам. Через некоторое время понимаем, что у нас Windows 7 или Windows 8 и мы хотим прикрепить консоль в taskbar, дабы вызывать ее через хоткей „win номер“. Делаем „pin this program to taskbar“, запускаем, и видим ЭТО:

Откуда взялся этот синий фон, который при раскраске становится черным? Ведь если запустить консоль через „win r“ — мы видим наши цвета, установленные на предыдущем шаге. Тут кроется самое интересное — когда мы прикрепляем консольное приложение на taskbar, Windows создает для него ярлык (файл с расширением .lnk) и устанавливает для этого ярлыка персональные настройки цветов. Что делать? Берем в руки python, немного COM, и модифицируем настройки ярлыка. Теперь совсем все работает.

Как изменить цвет командной строки

  1. Перейдите по ссылке на GitHub и кликните на файл colortool.zip. Сохраните этот архив в любом удобном вам месте.Цвет текста в командном файле | nhutils

Чтобы было легче ориентироваться, приводим примеры каждой из схем с соответствующей командой, которую надо использовать:

colortool -b campbell.ini

colortool -b campbell-legacy.ini

colortool -b cmd-legacy.ini

colortool -b deuteranopia.itermcolors

colortool -b OneHalfDark.itermcolors

colortool -b OneHalfLight.itermcolors

colortool -b solarized_dark.itermcolors

colortool -b solarized_light.itermcolors

Команда —b в этом случае отвечает за применение выбранной темы к Командной строке в целом. Если ее не использовать, тема будет применена только к текущему окну и после перезагрузки Командной строки вы снова будете наблюдать традиционное черно-белое оформление.

:/>  Как установить Windows 10 на переносной жёсткий диск USB » Страница 13

Есть также другие команды. -? Выводит окно справки, —c отображает цветовую таблицу текущей схемы, —q применяет тему без вывода таблицы на экран (тихое применение), —d применяет тему только к стандартным значениям в реестре, а —v отображает версию.

Теперь вам надо нажать правую кнопку мыши по строке заголовка окна Командной строки и выбрать Свойства.

Ничего не изменяйте и просто нажмите Ок. Таким образом вы сохраните внесенные изменения.

Перезагрузите Командную строку, и вы увидите, что примененная вами тема теперь используется по умолчанию. Нам больше всего понравился последний светлый вариант. Смотрится стильно и современно.

Как изменить цвет строки в cmd?

Сам я ни черта не понимаю в cmd, поэтому искал решение в интернетах.

Насколько я понял, color для этого не используют т.к. он меняет цвет во всей сессии. Зато используют какой-то хак с командой findstr, которой можно явно указать цвет выводимого ею сообщения.

Вот что нарыл:

:write
  setlocal
  :write1
  set "tempFolder=%TEMP%%~n0.%time:~-2%.%random%"
  md "%tempFolder%" 2>nul || goto write1
  pushd %tempFolder%
  set /p .=.<nul>"%~2"
  findstr /a:%~1 /c:"." /s "%~2"
  popd
  rd /s /q "%tempFolder%" 2>nul
endlocal & exit /b

:writeLn
  call :write %1 "%~2"
  echo:
exit /b

Эта фигня работает почти как надо, за исключением того, что добавляет двоеточие и точку в конце. То есть вызов call :write 0A "My Charona" вернет My Charona:., где My Charona и двоеточие будут зеленого цвета, а точка – дефолтного.

Некоторые строчки кода для меня почти ясны (findstr /a:%~1 /c:"." /s "%~2"), некоторые вообще черная магия (set /p .=.<nul>"%~2").

Можно ли как-то избавиться от двух последних символов в строке, которую выводит findstr?

Кстати, да: если из кода убрать все операции с директориями, функционал не меняется абсолютно, все работает так же.

Как получить ещё больше цветовых вариантов командной строки

Можно добавить дополнительные цвета при помощи файлов .itermcolors из интернета.

Одним из рекомендуемых Microsoft является файл iTerm2 Color Schemes. Это открытый проект на портале GitHub, который предлагает больше 150 цветовых схем для работы с командной строкой. Для использования этих схем следуйте следующей инструкции.

:/>  Как удалить всё с компьютера Windows кроме Windows

Параметры

В следующей таблице перечислены допустимые шестнадцатеричные числа, которые можно задать в качестве значений параметров т и ф.

ПараметрОписание
Черный
1Синий
2Зеленый
3Голубой
4Красный
5Сиреневый
6Желтый
7Белый
8Серый
9Светло-синий
AСветло-зеленый
BСветло-голубой
CСветло-красный
DСветло-сиреневый
EСветло-желтый
FЯркий белый
/?Выводит справочную информацию в командной строке.

Примеры использования

Чтобы изменить цвет текста на красный, а цвет фона на белый в окне командной строки, введите следующую команду:

Чтобы вернуть все настройки, которые были по-умолчанию наберите команду без параметров:

Источник

Синтаксис

Где т — цвет текста ф — цвет фона

Способы изменения цвета в командной строке и bat файле

Есть несколько довольно часто используемых способов, но они имеют существенные недостатки

  • стандартная команда COLOR меняет цвет сразу всего текста в окне
  • манипуляции с ANSY.SYS и ESC-последовательностями возможность выводить на экран в процессе работы пакетного файла текст с форматированием по цвету предполагают административные полномочия и не работают в современных версиях Windows
  • Раскраска текста с помощью findstr CMD/BAT: Вывод разноцветного текста имеет ограничения по выводимому тексту.

Цвет текста в командном файле

При разработке командного файла с выводом довольно большого объёма информации возникла необходимость выделения цветом части текста, например, сообщений о сбоях красным цветом, чтобы они сразу бросались в глаза. Хотелось, чтобы можно было вывести определённым цветом какую-то одну, две строки текста, или вывод определённой программы.

Цвет текста входного потока stdin

Программа выводит в заданном цвете весь поток, поступающий на stdin.

Цвет текста задаётся параметром, например, 0c — это светло-красный текст на черном фоне, а входной поток направляется в nhcolor

Результат:
Цвет текста в командном файле | nhutils

Цветовое оформление консольного вывода

В Windows 10 дизайнеры Microsoft хорошо поработали над улучшением внешнего вида командной строки, добавив новые настройки цветовых схем и реализовав прозрачность, но всё же в целом ее интерфейс остается таким же скучным. Если собственные цветовые настройки командной строки вас не устраивают, попробуйте Console Color Editor — небольшое приложение, предназначенное для создания и редактирования цветовых схем консоли CMD.

В программе уже имеется небольшой набор готовых цветовых схем, но служат они скорее для демонстрации работы приложения. Цветные кнопки, расположенные в верхней части окна редактора, соответствуют цветовому ряду на вкладке «Цвета» в свойствах командной строки. Клик по такой кнопке вызывает окошко системной палитры Windows, с помощью которой пользователь может изменить текущий цвет, если же кликнуть по кнопке с зажатой клавишей Ctrl, откроется окошко для вставки цвета в HEX-формате, что удобно при копировании из других источников.

:/>  Драйвер не найден при установке Windows 7, и нам не удалось найти драйверы. Чтобы получить драйвер запоминающего устройства

Console Color Editor

Console Color Editor

Console Color Editor

Кнопка «Apply» применяет настройки, «New» — служит для создания новой схемы, «Save» — сохраняет внесенные изменения. Для предпросмотра результата служит кнопка «Preview in CMD». Отдельной настройки, позволяющей изменять цвет текста в Console Color Editor нет, применение новых параметров подразумевает прежде всего редактирование схемы в настройках самой командной строки, то есть чтобы изменить цвет шрифта, вам всё равно нужно будет зайти в свойства консоли.

Console Color Editor

Console Color Editor

Скачать утилиту можно с сайта разработчика:

apps.codigobit.info/2021/08/console-color-editor-and-manager.html

Распространяется редактор цветовых схем командной строки на бесплатной основе, в установке не нуждается, язык простого интерфейса — английский. В текущей версии утилиты есть небольшой баг (?), из-за которого настройки применяются только к командной строке, запущенной с правами администратора, также по какой-то причине у нас оказалась неактивной кнопка сброса параметров «Reset CMD settings».

Различные цвета текста для ввода и вывода в cmd.exe

Установка цветов по умолчанию для текста и фона в текстовых окнах.

COLOR [цвета]

цвета Атрибуты цветов для текстовых окон

Атрибуты цветов задаются в виде ДВУХ шестнадцатеричных цифр — первая
задает цвет фона, а вторая определяет цвет текста. Каждая цифра может
иметь следующие значения:

0 = Черный      8 = Серый
1 = Синий       9 = Светло-синий
2 = Зеленый     A = Светло-зеленый
3 = Голубой     B = Светло-голубой
4 = Красный     C = Светло-красный
5 = Лиловый     D = Светло-лиловый
6 = Желтый      E = Светло-желтый
7 = Белый       F = Ярко-белый

Если аргумент не указан, команда восстанавливает исходный выбор
цветов, каким он был на момент запуска CMD.EXE. Это значение
извлекается из текущего текстового окна, из значения ключа /T или из
значения параметра реестра DefaultColor.

Это из справки к команде color.

например, дайт “хацкерский” терминал – кислотно-зеленые буквы на черном фоне.

Оставьте комментарий