Eu sei que o color bf
comando define as cores de toda a janela da linha de comando, mas eu queria imprimir uma única linha em uma cor diferente.
217
Eu sei que o color bf
comando define as cores de toda a janela da linha de comando, mas eu queria imprimir uma única linha em uma cor diferente.
Respostas:
Use seqüências de escape ANSI.
Windows anterior a 10 - sem suporte nativo para cores ANSI no console
Para a versão do Windows abaixo de 10, o console de comando do Windows não suporta a coloração de saída por padrão. Você pode instalar o Cmder , ConEmu , ANSICON ou Mintty (usado por padrão no GitBash e Cygwin) para adicionar suporte a cores no console de comando do Windows.
Windows 10 - Cores da linha de comando
A partir do Windows 10, o console do Windows suporta sequências de escape ANSI e algumas cores por padrão. O recurso enviado com a atualização do limite 2 em novembro de 2015.
Documentação MSDN
Atualização (05-2019): O ColorTool permite alterar o esquema de cores do console. Faz parte do projeto Microsoft Terminal .
Demo
Comando em lote
O
win10colors.cmd
foi escrito por Michele Locati :fonte
.cmd
ou.bat
- ambos devem funcionar. Mas acho que sei por que não funciona: parece que o símbolo de escape é removido ao postar no StackOverflow. Por favor, não copie o conteúdo da minha resposta, use o conteúdo daqui: gist.githubusercontent.com/mlocati/…ESC
no bloco de notas ++ antes ... Você pode fazer isso com Alt-códigos usando o teclado numérico e a tecla ALT esquerda:L-ALT
+0
+2
+7
ESC
personagem em um arquivo de lote da seguinte forma:for /F %%a in ('echo prompt $E ^| cmd') do set "ESC=%%a"
Este é um híbrido bat / .net auto-compilado (deve ser salvo como
.BAT
) que pode ser usado em qualquer sistema que tenha instalado o framework .net (é raro ver uma janela sem o .NET framework, mesmo para o XP / 2003 mais antigo instalações). Ele usa o compilador jscript.net para criar um exe capaz de imprimir seqüências de caracteres com cores diferentes de plano de fundo / primeiro plano apenas para a linha atual.Aqui está a mensagem de ajuda:
Exemplo :
coloroutput.bat -s "aa\nbb\n\u0025cc" -b 10 -f 3 -n -e
Você também pode encontrar esse script aqui .
Você também pode verificar a função de cor de carlos -> http://www.dostips.com/forum/viewtopic.php?f=3&t=4453
fonte
Essa não é uma ótima resposta, mas se você sabe que a estação de trabalho de destino possui o Powershell, pode fazer algo assim (assumindo o script BAT / CMD):
Edit: (agora mais simples!)
É uma resposta antiga, mas pensei em esclarecer e simplificar um pouco
O PowerShell agora está incluído em todas as versões do Windows desde 7. Portanto, a sintaxe desta resposta pode ser reduzida para uma forma mais simples:
-fore
vez de-foregroundcolor
-back
vez de-backgroundcolor
echo
(em vez de criar um arquivo em lotes separado, como acima).
Exemplo:
Mais Informações:
A lista completa de cores e mais informações está disponível em
- Documentação do PowerShell para
Write-Host
fonte
Windows 10 - TH2 e superior:
(aka Versão 1511, build 10586, versão 10/11/2015)
No prompt de comando:
Usando as teclas reais: eco Ctrl+ [
[32m HI
Ctrl+[[0m
EnterVocê deve ver um "HI" verde abaixo dele.
Os números de código podem ser encontrados aqui:
Bloco de anotações:
Para salvar isso no bloco de notas, você pode digitar ESC usando: Alt+
027
com o teclado numérico e depois a[32m
parte. Outro truque, quando eu estava em um laptop, redirecione a linha acima para um arquivo para começar e, em seguida, recorte e cole:fonte
\033
mas não ... como eu poderia fazer isso em Java?Você pode apenas criar arquivos com o nome da palavra a imprimir, usar findstr que pode imprimir em cores e depois apagar o arquivo. Tente este exemplo:
Corra
color /?
para obter uma lista de cores.fonte
Você pode usar o ANSICON para ativar os códigos de terminal ANSI nas versões mais antigas do Windows. Existem versões de 32 e 64 bits que usei no Windows XP e Windows 7.
fonte
Também fiquei irritado com a falta de cores adequadas no cmd, então fui em frente e criei o cmdcolor . É apenas um proxy stdout, que procura um conjunto limitado de seqüências de controle ANSI / VT100 (em outras palavras, como no bash), ie
echo \033[31m RED \033[0m DEFAULT | cmdcolor.exe
.Uso e downloads .
fonte
cmdcolor.exe; PE32 executable for MS Windows (console) Intel 80386 32-bit
upx
. Você poderia entrar em contato comigo por e-mail, por favor?Eu olhei para isso porque queria introduzir algumas cores de texto simples em um arquivo em lote do Win7. Isto é o que eu vim com. Obrigado pela ajuda.
fonte
Já existe uma resposta aceita com mais de 250 votos positivos. A razão pela qual ainda estou contribuindo é que o
escape
caractere necessário para ecoar não é aceito por muitos editores (estou usando, por exemplo, MS Code) e todas as outras soluções exigem alguns softwares de terceiros (que não sejam padrão do Windows).A solução alternativa usando apenas comandos simples de lote está usando em
PROMPT
vez deECHO
. OPROMPT
comando aceita oescape
caractere de maneira amigável a qualquer editor como uma$E
sequência de caracteres. (Basta substituir aEsc
nos códigos ASCII de escape ) com$E
.Aqui está um código de demonstração:
NOTA: A única desvantagem é que essa técnica colide com as configurações de cores do cmd do usuário (
color
comando ou configurações) se não for conhecido explicitamente.- Espero que isso ajude, pois esta é a única solução aceitável para mim pelas razões mencionadas no início. -
EDITAR:
Com base nos comentários, estou anexando outro trecho inspirado em @Jeb. Isto:
ECHO
comando "nativo"PROMPT
valor localECHO
saída afeta inevitavelmente aPROMPT
cor e, portanto, ela deve ser redefinidafonte
for /F "delims=#" %%E in ('"prompt #$E# & for %%E in (1) do rem"') do set "\e=%%E"
echo
usado em batcolors / echo.bat "?set ASCII27=←
porfor /F "delims=#" %%E in ('"prompt #$E# & for %%E in (1) do rem"') do set "ASCII27=%%E"
. Isso usa o caractere de escape criado pelo comando prompt, sem alterar o prompt permanentemente (porque oprompt
comando é executado em um processo filho). Btw. O seuechos.bat
tem algum potencial de otimização ...Estou adicionando uma resposta para resolver um problema observado em alguns comentários acima: que os códigos de cores ansi em linha podem se comportar mal quando dentro de um loop FOR (na verdade, dentro de qualquer bloco de código entre parênteses). O código .bat abaixo demonstra (1) o uso de códigos de cores embutidos, (2) a falha de cores que pode ocorrer quando códigos de cores embutidos são usados em um loop FOR ou dentro de um bloco de código entre parênteses, e (3) uma solução para o problema. Quando o código .bat é executado, os testes 2 e 3 demonstram a falha do código de cores e o teste 4 não mostra falhas porque implementa a solução.
[EDIT 2020-04-07: Encontrei outra solução presumivelmente mais eficiente do que chamar uma sub-rotina. Coloque a frase FINDSTR entre parênteses, como na seguinte linha:
ENDEDIT]
Nota: Na minha experiência (limitada), o problema do código de cores se manifesta somente depois que a entrada é canalizada para FINDSTR dentro do bloco de código. É assim que o seguinte .bat reproduz o problema. É possível que o problema do código de cores seja mais geral do que após a tubulação para o FINDSTR. Se alguém puder explicar a natureza do problema e se houver uma maneira melhor de resolvê-lo, eu agradeceria.
fonte
você pode usar o cecho .. você também pode usá-lo para incorporar diretamente no seu script, para que você não precise carregar um .com ou .exe
http://www.codeproject.com/Articles/17033/Add-Colors-to-Batch-Files
fonte
Acabei de converter do Win 7 Home para o Win 10 Pro e queria substituir o lote que chamo de outros lotes para fazer eco das informações em cores. Revendo o que foi discutido acima, uso o seguinte, que substituirá diretamente meu lote anterior. NOTA a adição de "~" à mensagem para que as mensagens com espaços possam ser usadas. Em vez de me lembrar dos códigos, uso letras para as cores necessárias.
Se% 2 contiver espaços, é necessário "..."% 1 Cores fortes em preto: R = Vermelho G = VERDE Y = AMARELO W = BRANCO
fonte
Você precisará repetir uma sequência de código de escape ANSI para alterar a cor do texto: http://en.wikipedia.org/wiki/ANSI_escape_code
Outra fonte muito boa desses códigos de escape é http://ascii-table.com/ansi-escape-sequences.php
fonte
Coloque as seguintes linhas em um arquivo chamado
ColourText.bas
na área de trabalho.Salve-o e digite o seguinte em um prompt de comando.
Um arquivo chamado ColourText.exe aparecerá na sua área de trabalho. Mova-o para a pasta do Windows .
Para usar, você deve usar dois códigos de caracteres para definir a cor, por exemplo,
01
não1
.Para definir azul no branco, não passando nenhum texto, depois vermelho no branco, terminando com azul no cinza.
ou
Também o
CLS
comando se torna interessante.Color
O comando sem parâmetros redefine todas as cores para as cores de inicialização.Para obter o código de cores, adicione os seguintes números. Use a Calculadora no modo de programadores. Estes são números hexadecimais. Eles podem ser adicionados juntos, por exemplo, Vermelho + Azul + FG Intensidade = 13 = D. Como 10+ não foi usado, o fundo será preto. Os códigos de cores DEVEM ter dois caracteres, por exemplo,
08
não8
.fonte
Para começar este trabalho no Windows 10, você pode ativar esta bandeira:
ENABLE_VIRTUAL_TERMINAL_PROCESSING
.Com essa chave do registro, você pode definir isso por padrão
[HKCU\Console] VirtualTerminalLevel dword 0x1
fonte
Uma alternativa é usar o NodeJS .
Aqui está um exemplo:
E este é o resultado:
fonte
Como Glenn Slayden disse nesta resposta , você pode adicionar ao registro o valor adequado para tornar o cmd "mais colorido".
fonte
Definir cores para as instruções de log no PowerShell não é um grande negócio. você pode usar o
-ForegroundColor
parâmetroPara escrever uma mensagem de confirmação.
Para escrever uma mensagem de erro.
Para escrever uma mensagem de progresso .
fonte
fonte
%ESC%
está vazio, então isso não funcionará.echo !white!
define a cor para branco. Para retornar às cores padrão (quaisquer que sejam as configurações do usuário): ocolor
comando sem parâmetros faz isso.Costumávamos fazer isso com códigos de terminal ANSI . Não tenho certeza se eles ainda funcionam, mas você pode experimentá-los.
fonte
Você pode usar o comando color para alterar a cor de todo o console
É preto e branco
É preto e verde
fonte