Arquivo de lote muda de cor de parte específica do texto

0

Como eu poderia mudar a cor de uma parte específica do texto dentro de um arquivo .bat? Atualmente tenho isso:

@echo off
:a
color 2
set /p command=$jp 
goto :%command%

que produz um "$ jp" verde. O texto que eu digito depois disso, hovewer também é verde, eu gostaria que apenas o "$ jp" fosse verde e a coisa que eu digitasse fosse branca, por exemplo. color F

    
por Makerimages 04.05.2014 / 13:29

2 respostas

1

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 ).

    
por 02.10.2017 / 02:56
0

Experimente este script. Esta é uma boa opção para sistemas de 32 bits. Você pode imprimir qualquer texto com qualquer cor em qualquer posição de tela:

link

    
por 11.11.2016 / 16:55

Tags