Я запускаю несколько автоматических тестов и пока отлаживаю информационные прокрутки в терминале командной строки Windows. Результаты теста либо начинаются с ok
или же not ok
, Есть ли способ получить not ok
сообщения для отображения в красном?
Я бы предпочел настроить терминал Windows, чем использовать архитектуру автоматизации тестирования.
windows-7
command-line
kyoob
источник
источник
Ответы:
Получить выборочный вывод цвета в команде cosole сложно. Во времена DOS вы могли использовать escape-коды ANSI через ANSI.SYS. Но это не работает на современных машинах Windows (определенно не на 64-битных машинах и, возможно, даже на 32-битных машинах)
Вы можете использовать PowerShell для вывода одной строки в цвете. Например:
Но переключение контекста происходит очень медленно.
Есть также хаки пакетных файлов, которые используют FINDSTR для выборочного вывода строк в цвете. Увидеть Как отображать разные цвета в командной строке Windows ,
Но оба вышеупомянутых метода требуют, чтобы вы предоставили цвет при создании контента. Но вы хотите выборочно раскрасить текст после того, как он уже был сгенерирован.
Конечно, нет никакой нативной утилиты, которая может делать то, что вы хотите. Возможно, есть сторонний инструмент, который может искать stdin и выделять совпадения красным, но я не знаком ни с одним.
Вместо использования цвета вы можете переформатировать каждую строку, содержащую интересующую строку. Например, совпадающим строкам может предшествовать строка вроде
>>>>>>>>>>
, Для этого вам понадобятся две вещи: 1) утилита поиска и замены на основе регулярных выражений, 2) возможность передачи результатов теста в утилиту.Я написал гибридная утилита JScript / batch под названием REPL.BAT , Он выполняет поиск и замену регулярных выражений в stdin и записывает результат в stdout. Утилита представляет собой чистый скрипт, поэтому сторонние исполняемые файлы не требуются. Он работает на любом компьютере с Windows начиная с XP. Полная документация встроена в скрипт.
Предполагая, что REPL.BAT находится в вашем текущем каталоге или, что еще лучше, где-то в вашем PATH:
Команда выше будет изменять только те строки, которые содержат
not ok
(без учета регистра) на границах слова. Есть много вариантов того, как вы переформатируете интересующую вас линию. Например, можно добавлять целые строки как до, так и после строки, используяX
вариант в сочетании с\n
escape-последовательность новой строки.источник