![¿Podemos usar más colores en secuencias de comandos por lotes?](https://rvso.com/image/1585769/%C2%BFPodemos%20usar%20m%C3%A1s%20colores%20en%20secuencias%20de%20comandos%20por%20lotes%3F.png)
Ya tenemos 16 colores allí:
0 = Black 8 = Gray
1 = Blue 9 = Light Blue
2 = Green A = Light Green
3 = Aqua B = Light Aqua
4 = Red C = Light Red
5 = Purple D = Light Purple
6 = Yellow E = Light Yellow
7 = White F = Bright White
pero quiero usar más colores en un archivo por lotes
¿Alguna ayuda?
Respuesta1
¿Puedo usar más de los 16 colores en un archivo por lotes de Windows?
No, ya que la mayoría de las aplicaciones de Windows solo admiten 16 colores.
Sin embargo, en Windows 10 Insiders Build #14931, la consola de Windows se actualizó para admitir color verdadero RGB de 24 bits.
Desafortunadamente, como se mencionó anteriormente, la mayoría de las aplicaciones de Windows no pueden hacer uso de esta mejora (todavía).
Sin embargo, al utilizar el Subsistema de Windows para Linux (WSL), los scripts y herramientas de Linux pueden utilizar la nueva compatibilidad con colores de 24 bits de la consola:
Una de las solicitudes más frecuentes que recibimos es aumentar la cantidad de colores que puede admitir la consola de Windows. ¡No hay nada que nos guste más que ofrecerle las funciones que usted solicita!
Pero en lugar de simplemente agregar algunos colores más, o limitar nuestra consola a solo 256 colores, en Windows 10 Insiders Build #14931,
¡Hemos actualizado la consola de Windows para admitir colores verdaderos RGB de 24 bits gloriosos y completos!
En realidad, esto es un poco complicado de demostrar, ya que la mayoría de las aplicaciones de Windows solo admiten 16 colores como máximo, mientras que el mundo Linux ha admitido ampliamente terminales de 256 colores desde hace un tiempo, y el color de 24 bits se está volviendo más establecido.
Gracias a nuestra capacidad de ejecutar aplicaciones y scripts de Linux usando nuestro nuevo entorno Bash en Ubuntu en Windows sobre el Subsistema de Windows para Linux (WSL), podemos usar algunos scripts y herramientas de Linux para demostrar la nueva compatibilidad con colores de 24 bits de la consola:
Aún no hemos comenzado a trabajar para mejorar la página de propiedades de la consola para admitir las nuevas capacidades de reproducción cromática de la consola y no hemos modificado las asignaciones de color predeterminadas de Windows; Haremos mejoras aquí y en muchas, MUCHAS otras características en cola en nuestro trabajo pendiente en futuras compilaciones.
Respuesta2
Windows 10 conhost.exeapoyaCódigos de escape ANSIincluido el color de 24 bits. Ver
Sin embargo, actualmente necesitashabilitar el soporte de secuencia ANSIcreando un DWORD nombrado VirtualTerminalLevel
enHKEY_CURRENT_USER\Console
y establezca su valor en 1. Después de eso, si se admite el color de 24 bits en bash, también puede usar el color ANSI de 24 bits en cualquier sesión de cmd o PowerShell. A continuación se muestra un ejemplo de cmd.
echo ESC[38;2;40;177;249m color: 40;177;249 ESC[0m
echo ESC[38;2;255;255;100m color: 255;255;100
echo ESC[48;2;200;0;200m color: 200;0;200 ESC[0m
Lamentablemente no puedo pegar el carácter de escape sin formato aquí, por lo que tendrás que cambiarlo ESC
al carácter de escape real (ASCII 27/0x1B) localmente. Aquí está el resultado de muestra:
En PowerShell es más fácil incrustar el carácter de escape como [char]0x1B
, o sin recurrir a métodos para pegar el carácter de escape sin formato [char]27
.`u{001B}
`e
echo "$([char]0x1B)[38;2;40;177;249m color: 40;177;249 $([char]0x1B)[0m"
echo "$([char]0x1B)[38;2;255;255;100m color: 255;255;100"
echo "$([char]0x1B)[48;2;200;0;200m color: 200;0;200 $([char]0x1B)[0m"
También puedes consultardetectar una consola compatible con ANSI desde un archivo por lotes de Windowse imprima en color de 4 bits o 24 bits dependiendo de la consola actual. En PowerShell es mucho más simple, solo usa$Host.UI.SupportsVirtualTerminal
Ver¿Cómo hacer que la consola win32 reconozca secuencias de escape ANSI/VT100?