当前位置:  开发笔记 > 编程语言 > 正文

如何在Windows命令提示符下更改文本颜色

如何解决《如何在Windows命令提示符下更改文本颜色》经验,为你挑选了2个好方法。

我有一个命令行程序,它输出日志到屏幕.

我希望错误行以红色显示.是否有一些特殊的字符代码我可以输出将文本颜色切换为红色,然后将其切换回白色?

我正在使用红宝石,但我想这与任何其他语言都是一样的.

就像是:

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

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

manveru.. 25

在Windows上,您可以通过三种方式轻松完成:

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

现在您可以使用一个名为的小方法扩展String red

 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 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的文档.



1> manveru..:

在Windows上,您可以通过三种方式轻松完成:

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

现在您可以使用一个名为的小方法扩展String red

 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 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的文档.



2> cjm..:

你需要访问[Win32 Console API](http://msdn.microsoft.com/en-us/library/ms682073 ( VS.85%29.aspx).不幸的是,我不知道你是怎么做的来自Ruby.在Perl中,我使用Win32 :: Console模块.Windows控制台不响应ANSI转义码.

根据artur02提到的关于着色Ruby输出的文章,你需要安装并加载win32console gem.

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有