Могу ли я настроить командную строку Windows 7 для окраски только определенных сообщений?

1

Я запускаю несколько автоматических тестов и пока отлаживаю информационные прокрутки в терминале командной строки Windows. Результаты теста либо начинаются с ok или же not ok, Есть ли способ получить not ok сообщения для отображения в красном?

Я бы предпочел настроить терминал Windows, чем использовать архитектуру автоматизации тестирования.

kyoob
источник
3
Я не думаю, что это возможно с командной строкой по умолчанию. Что-то вроде hamiltonlabs.com/Cshell.htm может быть интересным для вас.
Ramhound
Это указывает вам правильное направление? [Stackoverflow Question] [1] [1]: stackoverflow.com/questions/2048509/...
Gryphoenix
Делая то же самое, я сначала делаю CLS, затем отображаю результаты в желаемом цвете. оставьте результаты во время выполнения следующей операции (так, чтобы она оставалась на время). Затем снова очистите для следующих цветных результатов. Подбросить на каком-то фоне мигающий значок ошибки. Добавьте несколько звуков для «да» и «нет». Было бы неплохо, если бы цвета текста оставались, вместо того, чтобы менять весь текст на один цвет.
Psycogeek

Ответы:

1

Получить выборочный вывод цвета в команде cosole сложно. Во времена DOS вы могли использовать escape-коды ANSI через ANSI.SYS. Но это не работает на современных машинах Windows (определенно не на 64-битных машинах и, возможно, даже на 32-битных машинах)

Вы можете использовать PowerShell для вывода одной строки в цвете. Например:

powershell write-host -foregroundcolor Red "Hello world"

Но переключение контекста происходит очень медленно.

Есть также хаки пакетных файлов, которые используют FINDSTR для выборочного вывода строк в цвете. Увидеть Как отображать разные цвета в командной строке Windows ,

Но оба вышеупомянутых метода требуют, чтобы вы предоставили цвет при создании контента. Но вы хотите выборочно раскрасить текст после того, как он уже был сгенерирован.

Конечно, нет никакой нативной утилиты, которая может делать то, что вы хотите. Возможно, есть сторонний инструмент, который может искать stdin и выделять совпадения красным, но я не знаком ни с одним.

Вместо использования цвета вы можете переформатировать каждую строку, содержащую интересующую строку. Например, совпадающим строкам может предшествовать строка вроде >>>>>>>>>>, Для этого вам понадобятся две вещи: 1) утилита поиска и замены на основе регулярных выражений, 2) возможность передачи результатов теста в утилиту.

Я написал гибридная утилита JScript / batch под названием REPL.BAT , Он выполняет поиск и замену регулярных выражений в stdin и записывает результат в stdout. Утилита представляет собой чистый скрипт, поэтому сторонние исполняемые файлы не требуются. Он работает на любом компьютере с Windows начиная с XP. Полная документация встроена в скрипт.

Предполагая, что REPL.BAT находится в вашем текущем каталоге или, что еще лучше, где-то в вашем PATH:

yourAutomatedTestCommand | repl ".*\bnot ok\b.*" ">>>>>>>>>> $&" i

Команда выше будет изменять только те строки, которые содержат not ok (без учета регистра) на границах слова. Есть много вариантов того, как вы переформатируете интересующую вас линию. Например, можно добавлять целые строки как до, так и после строки, используя X вариант в сочетании с \n escape-последовательность новой строки.

dbenham
источник