Sé que el color bf
comando establece los colores de toda la ventana de la línea de comando, pero quería imprimir una sola línea en un color diferente.
217
Sé que el color bf
comando establece los colores de toda la ventana de la línea de comando, pero quería imprimir una sola línea en un color diferente.
Respuestas:
Use secuencias de escape ANSI.
Windows antes de 10: no hay soporte nativo para colores ANSI en la consola
Para la versión de Windows inferior a 10, la consola de comandos de Windows no admite el color de salida de forma predeterminada. Puede instalar Cmder , ConEmu , ANSICON o Mintty (usado por defecto en GitBash y Cygwin) para agregar soporte de color a su consola de comandos de Windows.
Windows 10 - Colores de línea de comando
A partir de Windows 10, la consola de Windows admite secuencias de escape ANSI y algunos colores de forma predeterminada. La función se envió con la actualización del umbral 2 en noviembre de 2015.
Documentación de MSDN
Actualización (05-2019): ColorTool le permite cambiar la combinación de colores de la consola. Es parte del proyecto Microsoft Terminal .
Manifestación
Comando por lotes
El
win10colors.cmd
fue escrito por Michele Locati :fuente
.cmd
o.bat
- ambos deberían funcionar. Pero creo que sé por qué no funciona: parece que el símbolo de escape se elimina al publicar en StackOverflow. No copie el contenido de mi respuesta, use el contenido de aquí en su lugar: gist.githubusercontent.com/mlocati/…ESC
Notepad ++ antes ... Puede hacer esto con códigos ALT usando el teclado numérico y la tecla ALT izquierda:L-ALT
+0
+2
+7
ESC
personaje en un archivo Batch de esta manera:for /F %%a in ('echo prompt $E ^| cmd') do set "ESC=%%a"
Este es un auto compilado híbrido bat / .net (debe guardarse como
.BAT
) que se puede usar en cualquier sistema que tenga instalado .net framework (es raro ver una ventana sin .NET framework incluso para el XP / 2003 más antiguo instalaciones). Utiliza el compilador jscript.net para crear un exe capaz de imprimir cadenas con diferentes colores de fondo / primer plano solo para la línea actual.Aquí está el mensaje de ayuda:
Ejemplo :
coloroutput.bat -s "aa\nbb\n\u0025cc" -b 10 -f 3 -n -e
También puedes encontrar este script aquí .
También puede consultar la función de color de carlos -> http://www.dostips.com/forum/viewtopic.php?f=3&t=4453
fuente
Esta no es una gran respuesta, pero si sabe que la estación de trabajo de destino tiene Powershell, puede hacer algo como esto (suponiendo un script BAT / CMD):
Editar: (ahora más simple!)
Es una respuesta antigua pero pensé que aclararía y simplificaría un poco
PowerShell ahora se incluye en todas las versiones de Windows desde 7. Por lo tanto, la sintaxis de esta respuesta se puede acortar a una forma más simple:
-fore
lugar de-foregroundcolor
-back
lugar de-backgroundcolor
echo
(en lugar de crear un archivo por lotes separado como se indicó anteriormente).
Ejemplo:
Más información:
La lista completa de colores y más información está disponible en
- Documentación de PowerShell para
Write-Host
fuente
Windows 10 - TH2 y superior:
(también conocida como Versión 1511, compilación 10586, versión 2015-11-10)
En el símbolo del sistema:
Usando las teclas reales: echo Ctrl+ [
[32m HI
Ctrl+[[0m
EnterDebería ver un "HI" verde debajo de él.
Los números de código se pueden encontrar aquí:
Bloc:
Para guardar esto en el bloc de notas, puede escribir ESC usando: Alt+
027
con el teclado numérico, luego la[32m
parte. Otro truco cuando estaba en una computadora portátil, redirige la línea de arriba a un archivo para comenzar, luego corta y pega:fuente
\033
pero no ... ¿cómo podría hacer esto en Java?Simplemente puede crear archivos con el nombre de la palabra para imprimir, usar findtr que puede imprimir en color y luego borrar el archivo. Prueba este ejemplo:
correr
color /?
para obtener una lista de colores.fuente
Puede usar ANSICON para habilitar códigos de terminal ANSI en versiones anteriores de Windows. Hay versiones de 32 y 64 bits que he usado en Windows XP y Windows 7.
fuente
También me molestó la falta de coloración adecuada en cmd, así que seguí adelante y creé cmdcolor . Es solo un proxy estándar, que busca un conjunto limitado de secuencias de control ANSI / VT100 (en otras palabras, como en bash), es decir
echo \033[31m RED \033[0m DEFAULT | cmdcolor.exe
.Uso y descargas .
fuente
cmdcolor.exe; PE32 executable for MS Windows (console) Intel 80386 32-bit
upx
. ¿Podría contactarme por correo electrónico, por favor?Miré esto porque quería introducir algunos colores de texto simples a un archivo Win7 Batch. Esto es lo que se me ocurrió. Gracias por tu ayuda.
fuente
Ya hay una respuesta aceptada con más de 250 votos a favor. La razón por la que sigo contribuyendo es que el
escape
carácter requerido para hacer eco no es aceptado por muchos editores (estoy usando, por ejemplo, MS Code) y todas las demás soluciones requieren algunas piezas de software de terceros (que no son Windows por defecto).La solución alternativa con el uso de comandos por lotes simples se está utilizando en
PROMPT
lugar deECHO
. ElPROMPT
comando acepta elescape
carácter de una manera amigable para cualquier editor como una$E
secuencia de caracteres. (Simplemente reemplace elEsc
en los códigos de escape ASCII ) con$E
.Aquí hay un código de demostración:
NOTA: El único inconveniente es que esta técnica colisiona con la configuración de color cmd del usuario (
color
comando o configuración) si no se conoce explícitamente.- Espero que esto ayude, ya que esta es la única solución aceptable para mí por las razones mencionadas al principio. -
EDITAR:
Según los comentarios, adjunto otro fragmento inspirado en @Jeb. Eso:
ECHO
comandos "nativos"PROMPT
valor .ECHO
resultado inevitablemente afecta elPROMPT
color, por lo que el color debe restablecerse, de todos modosfuente
for /F "delims=#" %%E in ('"prompt #$E# & for %%E in (1) do rem"') do set "\e=%%E"
echo
usado en batcolors / echo.bat "?set ASCII27=←
confor /F "delims=#" %%E in ('"prompt #$E# & for %%E in (1) do rem"') do set "ASCII27=%%E"
. Esto utiliza el carácter de escape creado por el comando de solicitud, sin cambiar la solicitud de forma permanente (porque elprompt
comando se ejecuta en un proceso secundario). Por cierto. Suechos.bat
tiene un potencial de optimización ...Estoy agregando una respuesta para abordar un problema señalado en algunos comentarios anteriores: que los códigos de color ansi en línea pueden comportarse mal cuando están dentro de un bucle FOR (en realidad, dentro de cualquier bloque de código entre paréntesis). El siguiente código .bat demuestra (1) el uso de códigos de color en línea, (2) la falla de color que puede ocurrir cuando los códigos de color en línea se usan en un bucle FOR o dentro de un bloque de código entre paréntesis, y (3) una solución para el problema. Cuando se ejecuta el código .bat, las pruebas 2 y 3 demuestran la falla del código de color, y la prueba 4 no muestra ninguna falla porque implementa la solución.
[EDITAR 2020-04-07: Encontré otra solución que presumiblemente es más eficiente que llamar a una subrutina. Encierre la frase FINDSTR entre paréntesis, como en la siguiente línea:
ENDEDIT]
Nota: En mi experiencia (limitada), el problema del código de color se manifiesta solo después de que la entrada se canaliza a FINDSTR dentro del bloque de código. Así es como el siguiente .bat reproduce el problema. Es posible que el problema del código de color sea más general que después de conectarlo a FINDSTR. Si alguien puede explicar la naturaleza del problema, y si hay una mejor manera de resolverlo, lo agradecería.
fuente
podrías usar cecho ... también puedes usarlo para incrustarlo directamente en tu script para que no tengas que llevar un .com o .exe
http://www.codeproject.com/Articles/17033/Add-Colors-to-Batch-Files
fuente
Acabo de convertir de Win 7 Home a Win 10 Pro y quería reemplazar el lote que llamo de otros lotes para hacer eco de la información en color. Al revisar lo que se discutió anteriormente, uso lo siguiente que reemplazará directamente a mi lote anterior. NOTA la adición de "~" al mensaje para que se puedan usar mensajes con espacios. En lugar de recordar códigos, uso letras para los colores que necesitaba.
Si% 2 contiene espacios requiere "..."% 1 Colores fuertes en negro: R = Rojo G = VERDE Y = AMARILLO W = BLANCO
fuente
Tendrá que repetir una secuencia de código de escape ANSI para alterar el color del texto: http://en.wikipedia.org/wiki/ANSI_escape_code
Otra muy buena fuente de estos códigos de escape es http://ascii-table.com/ansi-escape-sequences.php
fuente
Ponga las siguientes líneas en un archivo llamado
ColourText.bas
en su escritorio.Guárdelo y escriba lo siguiente en un símbolo del sistema.
Un archivo llamado ColourText.exe aparecerá en su escritorio. Muévalo a la carpeta de Windows .
Para usar debe usar dos códigos de caracteres para establecer el color, por ejemplo,
01
no1
.Por ejemplo, establecer azul sobre blanco sin pasar ningún texto, luego rojo sobre blanco, terminando con azul sobre gris.
o
También el
CLS
comando se vuelve interesante.Color
El comando sin parámetros restablece todos los colores a los colores de inicio.Para obtener el código de color, agregue los siguientes números. Utilice la calculadora en modo programadores. Estos son números hexadecimales. Se pueden agregar juntos, por ejemplo, Rojo + Azul + FG Intensidad = 13 = D. Como no se utilizó 10+, el fondo será negro. Los códigos de color DEBEN tener dos caracteres, por ejemplo,
08
no8
.fuente
Para que esto funcione en Windows 10, puede activar esta bandera:
ENABLE_VIRTUAL_TERMINAL_PROCESSING
.Con esta clave de registro puede configurar esto de manera predeterminada
[HKCU\Console] VirtualTerminalLevel dword 0x1
fuente
Una alternativa es usar NodeJS .
Aquí hay un ejemplo:
Y este es el resultado:
fuente
Como Glenn Slayden dijo en esta respuesta , puede agregar al registro el valor adecuado para hacer que el cmd sea "más colorido".
fuente
Establecer color en las declaraciones de registro en powershell no es un gran amigo. Puedes usar el
-ForegroundColor
parámetro.Para escribir un mensaje de confirmación.
Para escribir un mensaje de error.
Para escribir un mensaje de progreso .
fuente
fuente
%ESC%
está vacío, por lo que esto no funcionará.echo !white!
establece el color en blanco. Para volver a los colores predeterminados (cualesquiera que sean las configuraciones de usuario para eso): elcolor
comando sin parámetros hace eso.Solíamos hacer esto con los códigos de terminal ANSI . No estoy seguro si todavía funcionan, pero puedes probarlos.
fuente
Puede usar el comando de color para cambiar el color de toda la consola
Es blanco y negro
Es negro y verde
fuente