Posso personalizar o prompt de comando do Windows 7 para colorir apenas determinadas mensagens?

1

Estou executando alguns testes automatizados e, ao mesmo tempo, estou depurando as informações roladas no meu terminal de prompt de comando do Windows. Os resultados do caso de teste começam com ok ou not ok . Existe alguma maneira de obter as mensagens not ok a aparecer em vermelho?

Preferiria personalizar o terminal do Windows do que o macacão da arquitetura de automação de teste.

    
por kyoob 05.09.2013 / 18:29

1 resposta

1

Obter saída de cor seletiva em um comando cosole é difícil. Nos dias do DOS, você poderia usar códigos de escape ANSI via ANSI.SYS. Mas isso não funciona em máquinas Windows modernas (definitivamente não em máquinas de 64 bits e possivelmente nem em máquinas de 32 bits)

Você pode usar o PowerShell para produzir uma única linha em cores. Por exemplo:

powershell write-host -foregroundcolor Red "Hello world"

Mas a troca de contexto é muito lenta.

Também existem hacks de arquivos em lote que usam FINDSTR para selecionar seqüências de caracteres em cores. Veja Como ecoar com cores diferentes na linha de comando do Windows .

Mas ambas as técnicas acima exigem que você forneça a cor quando o conteúdo é gerado. Mas você deseja colorir o texto de forma seletiva depois de já ter sido gerado.

Certamente não há nenhum utilitário nativo que possa fazer o que você deseja. Talvez exista uma ferramenta de terceiros que possa pesquisar stdin e realçar correspondências em vermelho, mas não estou familiarizado com nenhuma.

Em vez de usar cores, você pode reformatar cada linha que contém a sequência de interesse. Por exemplo, as linhas correspondentes podem ser prefixadas com uma string como >>>>>>>>>> . Para fazer isso, você precisa de duas coisas: 1) Um utilitário de pesquisa e substituição baseado em linha regex, 2) a capacidade de canalizar os resultados do teste para o utilitário.

Eu escrevi um utilitário JScript / batch híbrido chamado REPL.BAT . Ele executa uma pesquisa em regex e substitui stdin e grava o resultado em stdout. O utilitário é script puro, portanto, nenhum executável de terceiros é necessário. Ele é executado em qualquer máquina Windows do XP em diante. A documentação completa está incorporada no script.

Assumindo que o REPL.BAT está no seu diretório atual, ou melhor ainda, em algum lugar dentro do seu PATH:

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

O comando acima apenas modificará linhas que contenham not ok (não diferencia maiúsculas de minúsculas) em word boundries. Há muitas opções para reformatar a linha de interesse. Por exemplo, linhas inteiras podem ser adicionadas antes e depois da linha usando a opção X juntamente com a seqüência de escape \n newline.

    
por 05.09.2013 / 22:13