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

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

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

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

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

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

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

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

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

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

echo Файл не найден | nhcolor 0c

Результат:
Пример nhcolor

Цвет текста, заданного в командной строке

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

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

nhcolor 0a Архивирование закончено

Результат:
Пример nhcolor

Ещё один пример, который показывает вывод всех 15 доступных цветов текста на черном тексте:

Таблица цветов

Цвета обозначаются теми же кодами, что и в команде COLOR.

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

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

Ссылки

Описание программы nhcolor

Загрузка новой версии программы nhcolor

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

Цвет текста в командном файле: 21 комментарий

  • 02.10.2022 в 06:31
    Постоянная ссылка

    Есть ли вариант nhcolor без перевода строки. Самому ставить c/c++ в лом и некогда. Но очень надо обыскался в инете.

    Ответить
    • 04.08.2021 в 00:33
      Постоянная ссылка

      1. Скачать ZIP и распаковать. 2. В Windows 10 работает. 3. Вирусов нет, но рекомендую проверять, например, через VirusTotal.

      Ответить
  • 13.05.2021 в 23:45
    Постоянная ссылка

    есть вопросик…
    делаю пинг со звуком:
    ping -t 10.0.0.1 | nhrt -spt:"TTL" -et:"TTL\x07"
    всё ок, а можно-ли сделать так что-бы пинг в зависимости от результата выводился разным цветом:
    ну типа если есть TTL то зелёным цветом?
    (можно даже без замены)

    Ответить
    • 19.05.2021 в 10:26
      Постоянная ссылка

      да, если построчно разбирать вывод ping и в зависимости от содержания строки выводить через nhcolor в том или ином цвете

      Ответить
        • 20.05.2021 в 03:15
          Постоянная ссылка

          если просто в командной строке, то так
          for /F "delims=" %i IN ('ping.exe -n 10 ya.ru') DO @echo %i | find /V "TTL" | nhcolor 0C & @echo %i | find "TTL"
          соответственно, в bat файле
          @echo off
          for /F "delims=" %%i IN ('ping.exe -n 10 ya.ru') DO @echo %%i | find /V "TTL" | nhcolor 0C & @echo %%i | find "TTL"

          Это работает, но с одним минусом — весь вывод буферизируется и показывается только после завершения ping. Такая особенность работы cmd. Попозже напишу, как можно сделать через JScript без задержки вывода.

          Ответить
          • 20.05.2021 в 20:33
            Постоянная ссылка

            Так-с, получается примерно понял как енто работает…
            у меня получился вот такой в итоге вариантик:
            :loop
            for /F «delims=» %%i IN (‘ping.exe -n 1 ya.ru’) DO @echo %%i | find «14мс » | nhcolor 0A»
            for /F «delims=» %%i IN (‘ping.exe -n 1 ya.ru’) DO @echo %%i | find «16мс » | nhcolor 0C»
            Goto :loop

            красным цветом выводит если 16 секунд а зелёным если 14 и всё лишнее отсекает…

            ах, да Спасибище за софтину и разъяснения…

  • 13.06.2019 в 20:34
    Постоянная ссылка

    x64 такой нету?
    в winPE х64 она не работает, только х32, там нет режима совместимости, и для х64 нужна именно 64.

    Ответить
    • 14.11.2017 в 08:50
      Постоянная ссылка

      в принципе, может быть любая директория. только может потребоваться прописать ее путь в переменную path.

      я обычно устанавливаю,
      — если требуется только для текущего пользователя, то в %userprofile%\AppData\local\nhutils
      — если для всех пользователей, то в %ProgramFiles(x86)%\nhutils
      При этом надо прописать этот путь в переменную path. См. Переменные среды в Windows 7.

      можно и в system32 — тогда программа сразу будет доступна для всех пользователей и не надо будет прописывать путь в переменную path

      Ответить

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *