texto letras letra iconos color cambiar windows ruby command-line colors

texto - cambiar color de letras de iconos windows 8



¿Cómo puedo cambiar el color del texto en el símbolo del sistema de Windows? (14)

En última instancia, debe llamar a SetConsoleTextAttribute . Puede obtener un identificador de búfer de pantalla de consola desde GetStdHandle .

Tengo un programa de línea de comando, que da salida al registro en la pantalla.

Quiero que las líneas de error aparezcan en rojo. ¿Hay algún código especial de caracteres que pueda mostrar para cambiar el color del texto a rojo y luego volver a ponerlo en blanco?

Estoy usando ruby, pero me imagino que esto sería igual en cualquier otro idioma.

Algo como:

red = "/0123" # character code white = "/0223" print "#{red} ERROR: IT BROKE #{white}" print "other stuff"


La especificación C / C ++ estándar para la salida a la línea de comando no especifica ninguna capacidad para cambiar el color de la ventana de la consola. Dicho esto, hay muchas funciones en Win32 para hacer tal cosa.

La forma más fácil de cambiar el color de la consola Win32 es mediante el comando del sistema en iostream.h. Esta función invoca un comando de DOS. Para cambiar los colores, lo usaremos para invocar el comando de color. Por ejemplo, system("Color F1"); hará que la consola sea azul oscuro en blanco.

Colores de DOS

Los colores disponibles para usar con el comando son los dieciséis colores de DOS, cada uno representado con un dígito hexadecimal. El primero es el fondo y el segundo es el primer plano.

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

Solo este pequeño toque de color hace que los programas de la consola sean más agradables visualmente. Sin embargo, el comando Color cambiará el color de toda la consola. Para controlar celdas individuales, necesitamos usar funciones de windows.h.

Haz lo que necesites para usar la función SetConsoleAttribute

http://msdn.microsoft.com/en-us/library/ms686047.aspx


Muchos de los antiguos códigos de color de ANSI funcionan. El código para un primer plano rojo es algo así como Escape- [31m. Escape es el carácter 27, por lo que es "/ 033 [31m" o "/ x1B [31m", dependiendo de su esquema de escape.

[39m es el código para volver al color predeterminado.

También es posible especificar múltiples códigos a la vez para establecer el color de fondo y de fondo simultáneamente.

Puede que tenga que cargar ANSI.sys, vea esta página .



Podría usar una secuencia de escape ANSI, pero eso no hará lo que quiera en las versiones modernas de Windows. Wikipedia tiene un artículo muy informativo:

http://en.wikipedia.org/wiki/ANSI_escape_code

Entonces la respuesta a su pregunta original es casi seguro que "no". Sin embargo, puede cambiar el color de primer plano sin escribir una secuencia de escape, por ejemplo, invocando una función API de Win32. No sé cómo hacer este tipo de cosas en Ruby fuera de mi cabeza, pero alguien más parece haber logrado:

http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/241925

Me imagino que querrías usar 4 para rojo oscuro o 12 para rojo brillante, y 7 para restaurar el color predeterminado.

¡Espero que esto ayude!


Por lo que yo sé, no es posible con una línea de comando, es solo un color ...


Puede leer aquí un artículo bueno e ilustrado: http://kpumuk.info/ruby-on-rails/colorizing-console-ruby-script-output/

Creo que configurar el color del texto de la consola es bastante específico del idioma. Aquí hay un ejemplo en C # de MSDN:

for (int x = 0; x < colorNames.Length; x++) { Console.Write("{0,2}: ", x); Console.BackgroundColor = ConsoleColor.Black; Console.ForegroundColor = (ConsoleColor)Enum.Parse(typeof(ConsoleColor), colorNames[x]); Console.Write("This is foreground color {0}.", colorNames[x]); Console.ResetColor(); Console.WriteLine(); }

Console.ForegroundColor es la propiedad para establecer el color del texto.



en códigos de escape ANSI:

Modo de caracteres de 32 bits (subsistema: consola) Las aplicaciones de Windows no escriben secuencias de escape ANSI en la consola

Deben interpretar las acciones del código de escape y llamar a la API de consola nativa en su lugar

Gracias microsoft :-(


color [background][foreground]

Donde los colores se definen de la siguiente manera:

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

Por ejemplo, para cambiar el fondo a azul y el primer plano a gris, debe escribir:

color 18


using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Console_Test { class Program { static void Main(string[] args) { Console.ForegroundColor = ConsoleColor.DarkRed; Console.WriteLine("Hello World"); Console.ReadKey(); } } }

Puede cambiar el color con un simple programa C #, http://powerof2games.com/node/31 describe cómo puede envolver la salida de la consola para lograr el efecto.


He estado usando un programa freeware windows tail llamado baretail (google it) para las edades que te permite hacer una versión de Windows-Appified del comando tail de Unix. Le permite colorear líneas dependiendo de las palabras clave que defina. Lo bueno de esta solución es que no está ligada a un idioma o configuración específica, etc., simplemente defines tu combinación de colores y está en modo de burro como kong. ¡En mis 10 mejores freeware helpers!


Soy el autor de una pequeña joya multiplataforma que maneja este funcionamiento sin problemas en Windows o sistemas POSIX, tanto en MRI como en JRuby.

No tiene dependencias y usa códigos ANSI en sistemas POSIX, y FFI (JRuby) o Fiddler (MRI) para Windows.

Para usarlo, simplemente:

gem install color-console

ColorConsole proporciona métodos para generar líneas de texto en diferentes colores, utilizando las funciones Console.write y Console.puts.

require ''color-console'' Console.puts "Some text" # Outputs text using the current console colours Console.puts "Some other text", :red # Outputs red text with the current background Console.puts "Yet more text", nil, :blue # Outputs text using the current foreground and a blue background # The following lines output BlueRedGreen on a single line, each word in the appropriate color Console.write "Blue ", :blue Console.write "Red ", :red Console.write "Green", :green

Visite la página principal del proyecto en https://github.com/agardiner/color-console para obtener más detalles.


En Windows, puede hacerlo fácilmente de tres maneras:

require ''win32console'' puts "/e[31mHello, World!/e[0m"

Ahora puedes extender String con un pequeño método llamado red

require ''win32console'' class String def red "/e[31m#{self}/e[0m" end end puts "Hello, World!".red

También puedes extender String así para obtener más colores:

require ''win32console'' class String { :reset => 0, :bold => 1, :dark => 2, :underline => 4, :blink => 5, :negative => 7, :black => 30, :red => 31, :green => 32, :yellow => 33, :blue => 34, :magenta => 35, :cyan => 36, :white => 37, }.each do |key, value| define_method key do "/e[#{value}m" + self + "/e[0m" end end end puts "Hello, World!".red

O bien, si puedes instalar gemas:

gem install term-ansicolor

Y en tu programa:

require ''win32console'' require ''term/ansicolor'' class String include Term::ANSIColor end puts "Hello, World!".red puts "Hello, World!".blue puts "Annoy me!".blink.yellow.bold

Consulte los documentos para term / ansicolor para obtener más información y uso posible.