Techioz Blog

Windowsのコマンドプロンプトでテキストの色を変更するにはどうすればよいですか

概要

ログを画面に出力するコマンドラインプログラムがあります。

エラー行を赤色で表示したい。テキストの色を赤に切り替えてから白に戻すために出力できる特殊な文字コードはありますか?

私は Ruby を使用していますが、これは他の言語でも同じだと思います。

何かのようなもの:

red = "\0123" # character code
white = "\0223"

print "#{red} ERROR: IT BROKE #{white}"
print "other stuff"

解決策

Windows では、次の 3 つの方法で簡単に実行できます。

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

red と呼ばれる小さなメソッドを使用して String を拡張できるようになりました。

 require 'win32console'
 class String
   def red
     "\e[31m#{self}\e[0m"
   end
 end

 puts "Hello, World!".red

また、次のように String を拡張して、より多くの色を取得することもできます。

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

または、gem をインストールできる場合:

gem install term-ansicolor

そしてあなたのプログラムでは:

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

詳細と可能な使用法については、term/ansicolor のドキュメントを参照してください。