Como observado pelo comentário de dbenham, isso é discutido pelo como ter várias cores em um arquivo de lote do StackOverflow
Revendo essa questão, é sobre o Windows 7. As respostas lá são todas que requerem software extra, ou usam algumas técnicas de arquivo em lote que parecem ... um pouco complexas.
No entanto, essa pergunta não tem um sistema operacional marcado e gostaria de adicionar novas informações relevantes para um sistema operacional mais recente. O Windows 10 adicionou suporte para seqüências de escape ANSI.
A beleza das sequências de escape ANSI é que usá-las é conceitualmente fácil. Você só precisa usar seqüências de escape de cores ANSI (como aquelas documentadas em página de Rob van der Woude em ANSI Color ) e incluí-los numa declaração ECHO.
Infelizmente, usar essas sequências pode ser um pouco mais difícil devido ao manuseio do 27º caractere ASCII.
Agora, o truque para usar seqüências ANSI Escape é enviar o 27º caractere ASCII para a tela. A razão pela qual isso é complicado é porque a tecla do teclado mais comumente relacionada ao ASCII 27 é a tecla Esc . (Esta é uma razão principal pela qual estas seqüências de escape ANSI são freqüentemente chamadas de seqüências de "escape".) E muitos softwares têm suporte especial para a tecla Esc . Esse suporte especial geralmente dificulta o envio de um simples número de caracteres ASCII 27.
Muitas vezes, as pessoas trabalharam em torno disso, armazenando o 27º caractere em um arquivo, e apenas copie e cole o caractere conforme necessário. Então, fazer um arquivo com muitas sequências ANSI envolve usar o 27º caractere ASCII várias vezes, o que pode ser feito usando copiar e colar.
No entanto, existe uma abordagem melhor. Apenas pegue o caractere ASCII em um arquivo uma vez e coloque-o em uma variável de ambiente. Isso funciona bem no Windows 10 (e, pelo que eu li, terminais UNIX). Então você pode se referir a essa variável de ambiente.
Consegui criar um arquivo em lote usando o ssed . O arquivo em lote, mencionado mais abaixo, simplesmente define uma variável chamada ASCII 27 para conter esse caractere.
Além disso, você pode criar variáveis de ambiente. Então, ao invés de algo como:
echo %ASCII27%[31m Lava %ASCII27%[37m Cyan/Aqua/Teal text %ASCII27%[33m Sun
echo %ASCII27%[34m Water %ASCII27%[37m Sky %ASCII27%[33m Sun
Você pode usar:
SET ANSIREDFG=%ASCII27%[31m
SET ANSICYANFG=%ASCII27%[37m
SET ANSIYELLOWFG=%ASCII27%[33m
SET ANSIBLUEFG=%ASCII27%[34m
echo %ANSIREDFG% Lava %ANSICYANFG% Cyan/Aqua/Teal text %ANSIYELLOWFG% Sun
echo %ANSIBLUEFG% Water %ANSICYANFG% Sky %ANSIYELLOWFG% Sun
Isso pode não parecer muito mais curto. A vantagem aqui não é necessariamente tornar o arquivo mais bonito, mas você pode usar nomes mais amigáveis (que você decide) como %ANSIBLUEFG%
para usar o BLUE como a cor do primeiro plano, em vez de precisar lembrar qual cor está relacionada a qual número. Isso pode ser muito mais rápido para digitar e depurar (se você não tiver os números de cores memorizados).
Eu criei um arquivo ZIP contendo:
- OUT.ANS: um arquivo ANSI de amostra para mostrar isso, contendo vários layouts de cores por linha
- ANSICOL.BATt: um arquivo em lote que foi usado para criar esse arquivo ANSI, demonstrando o uso de nomes de variáveis em vez de referências numéricas frequentes aos números de cores,
- e ASCII27.BAT que apenas cria a variável ASCII27 contendo a seqüência de escape
Este arquivo ZIP está em demonstração ANSI do Windows 10, versão 1 . O arquivo de lote foi feito para funcionar bem com o Windows 10. Devido ao uso de “ %^%
”, isso pode não funcionar tão maravilhosamente em alguns sistemas operacionais antigos (mas provavelmente funcionaria como esperado se substituir “% ^%” por “% % ”).
Se você não quiser mexer com variáveis de ambiente, você pode tentar copiar e colar os códigos diretamente do arquivo out.ans (que pode funcionar maravilhosamente bem, se o seu editor de texto não corromper o caractere ASCII 27 ).