2008-09-16 19 views
12

में टेक्स्ट रंग कैसे बदल सकता हूं मेरे पास एक कमांड लाइन प्रोग्राम है, जो स्क्रीन पर लॉगिंग आउटपुट करता है।मैं विंडोज कमांड प्रॉम्प्ट

मुझे लाल रेखा में दिखाने के लिए त्रुटि रेखाएं चाहिए। क्या कुछ विशेष वर्ण कोड हैं जिन्हें मैं पाठ रंग को लाल रंग में बदलने के लिए आउटपुट कर सकता हूं, फिर इसे वापस सफेद पर स्विच कर सकता हूं?

मैं रूबी का उपयोग कर रहा हूं लेकिन मुझे लगता है कि यह किसी भी अन्य भाषा में समान होगा।

कुछ की तरह:

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

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

उत्तर

6

आप [Win32 कंसोल एपीआई] (http://msdn.microsoft.com/en-us/library/ms682073(VS.85%29.aspx) का उपयोग करने की जरूरत है। दुर्भाग्य से, मैं कैसे तुम से ऐसा होता है पता नहीं है रूबी। पर्ल में, मैं Win32::Console मॉड्यूल। article on colorizing Ruby output कि उल्लेख किया artur02 के अनुसार प्रयोग करेंगे Windows कंसोल एएनएसआई मुक्ति कोड का जवाब नहीं है।

, आप & लोड win32console मणि स्थापित करने की आवश्यकता।

0

जहाँ तक मुझे पता के रूप में यह एक कमांड लाइन के साथ संभव नहीं है, यह सिर्फ एक रंग है ...

0
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(); 
     } 
    } 
} 

आप एक का उपयोग कर रंग बदल सकते हैं सरल सी # प्रोग्राम, http://powerof2games.com/node/31 वर्णन करता है कि आप प्रभाव प्राप्त करने के लिए कंसोल आउटपुट को कैसे लपेट सकते हैं।

0

आप ANSI escape codes चाहते हैं।

+2

एएनएसआई एस्केप कोड विंडोज कमांड प्रॉम्प्ट पर उपलब्ध नहीं हैं, मूल रूप से। –

0

पुराने एएनएसआई Color Codes काम का बहुत सारे काम। लाल अग्रभूमि के लिए कोड एस्केप की तरह कुछ है- [31 मीटर। एस्केप चरित्र 27 है, इसलिए यह आपकी बचपन योजना के आधार पर "\ 033 [31m" या "\ x1B [31m" है।

[3 9 एम डिफ़ॉल्ट कोड पर वापस जाने के लिए कोड है।

एक साथ अग्रभूमि और पृष्ठभूमि रंग सेट करने के लिए एक साथ कई कोड निर्दिष्ट करना भी संभव है।

आपको ANSI.sys लोड करना पड़ सकता है, this page देखें।

3

आप यहाँ एक अच्छा और सचित्र लेख पढ़ सकते हैं: http://kpumuk.info/ruby-on-rails/colorizing-console-ruby-script-output/

मैं सांत्वना पाठ रंग की स्थापना लगता है कि सुंदर भाषा-विशिष्ट है। यहाँ 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 पाठ रंग की स्थापना के लिए संपत्ति है।

0

कमांड लाइन में आउटपुट के लिए मानक सी/सी ++ विनिर्देश कंसोल विंडो के रंग को बदलने के लिए किसी भी क्षमता को निर्दिष्ट नहीं करता है। उस ने कहा, ऐसी चीज करने के लिए Win32 में कई फ़ंक्शन हैं।

Win32 कंसोल के रंग को बदलने का सबसे आसान तरीका iostream.h में सिस्टम कमांड के माध्यम से है। यह फ़ंक्शन एक डॉस कमांड का आह्वान करता है। रंग बदलने के लिए, हम रंग कमांड का आह्वान करने के लिए इसका इस्तेमाल करेंगे। उदाहरण के लिए, system("Color F1"); सफेद पर कंसोल darkblue बना देगा।

डॉस रंग

रंग कमांड के साथ उपयोग के लिए उपलब्ध प्रत्येक एक हेक्स अंक के साथ प्रतिनिधित्व किया सोलह डॉस रंग हैं। पहला पृष्ठभूमि है और दूसरा अग्रभूमि है।

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 

बस रंग का यह छोटा स्पर्श सांत्वना कार्यक्रमों अधिक नेत्रहीन मनभावन बनाता है। हालांकि, कलर कमांड पूरे कंसोल के रंग को बदल देगा। व्यक्तिगत कोशिकाओं को नियंत्रित करने के लिए, हमें windows.h से फ़ंक्शंस का उपयोग करने की आवश्यकता है।

कि आप SetConsoleAttribute फ़ंक्शन का उपयोग करने की आवश्यकता है है

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

0

अंततः आपको SetConsoleTextAttribute पर कॉल करने की आवश्यकता है। आप GetStdHandle से कंसोल स्क्रीन बफर हैंडल प्राप्त कर सकते हैं।

2

आप एक एएनएसआई एस्केप अनुक्रम का उपयोग कर सकते हैं, लेकिन यह विंडोज़ के आधुनिक संस्करणों के तहत आप जो चाहते हैं वह नहीं करेगा। विकिपीडिया एक बहुत जानकारीपूर्ण लेख है: "। नहीं"

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

तो अपने मूल सवाल का जवाब लगभग निश्चित रूप से है हालांकि, आप एक भागने अनुक्रम लिखने के बिना अग्रभूमि रंग बदल सकते हैं, उदाहरण के लिए Win32 API फ़ंक्शन का आह्वान करके। मैं कैसे मेरे सिर के ऊपर से रूबी में बात की इस तरह करने के लिए पता नहीं है, लेकिन किसी और कामयाब है लगता है:

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

मैं कल्पना आप गहरे लाल के लिए 4 का उपयोग करना चाहें या चमकदार लाल के लिए 12, और 7 डिफ़ॉल्ट रंग को बहाल करने के लिए।

आशा है कि इससे मदद मिलती है!

2
एएनएसआई मुक्ति कोड पर

:

32-बिट चरित्र-मोड (सबसिस्टम: कंसोल) Windows अनुप्रयोग एएनएसआई कंसोल के लिए दृश्यों से बचने नहीं लिखते

वे भागने कोड कार्यों की व्याख्या करना चाहिए और देशी कंसोल एपीआई फोन बजाय

धन्यवाद माइक्रोसॉफ्ट :-(

2

color [background][foreground]

कहाँ रंग के रूप में परिभाषित कर रहे हैं इस प्रकार है:

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 

उदाहरण के लिए, नीले और अग्रभूमि ग्रे करने के लिए पृष्ठभूमि परिवर्तित करने के लिए, आप टाइप करेंगे:

color 18

+0

साइगविन में उपयोग के लिए: उपनाम रंग = 'cmd/c रंग' – zzapper

0

मैं किया गया है एक फ्रीवेयर विंडोज पूंछ प्रोग्राम का उपयोग करके जिसे नंगेटेल (google it) कहा जाता है, जो आपको यूनिक्स पूंछ कमांड के विंडोज़-एपिफाइड संस्करण की सुविधा देता है। यह आपको जो भी कीवर्ड परिभाषित करता है उस पर निर्भर लाइनों को रंगीन करने देता है। समाधान के रूप में इसके बारे में क्या अच्छा है यह किसी विशिष्ट भाषा या सेटअप आदि से बंधे नहीं है, आप बस अपनी रंग योजना और इसे गधे कोंग की तरह परिभाषित करते हैं। मेरे व्यक्तिगत शीर्ष 10 फ्रीवेयर सहायक में!

24

खिड़कियों पर, आप इसे आसानी से तीन तरीकों से कर सकते हैं:

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

अब आप एक छोटे से विधि कहा जाता red

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

puts "Hello, World!".red 

इसके अलावा, आप इस तरह स्ट्रिंग का विस्तार पाने के लिए कर सकते हैं के साथ स्ट्रिंग का विस्तार कर सकता है अधिक रंग:

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 

कृपया अवधि के लिए दस्तावेज़ देख सकेंगे/ansicolor अधिक जानकारी और संभव उपयोग के लिए।

+1

या, आप मणि 'रंगीन' का उपयोग कर सकते हैं। * खिड़कियों आप मैन्युअल रूप से 'आवश्यकता की जरूरत है 'जब इसे का उपयोग win32console', के रूप में' colorize 'पर नोट * केवल जाँच करता है' अगर कुछ मामलों 'RUBY_PLATFORM' रिटर्न' i386-mingw32' में RUBY_PLATFORM = ~/Win32/'और। –

+0

मुझे लगता है कि आप एक 'अंत' खो रहे हैं –

2

मैं एक छोटे से पार मंच मणि है कि दोनों एमआरआई और JRuby के तहत इस मूल विंडोज या POSIX-सिस्टम पर चलने वाले, संभालती लेखक गए हैं।

यह कोई निर्भरता है, और POSIX सिस्टम पर एएनएसआई कोड का उपयोग करता है, और या तो FFI (JRuby) या फ़िडलर (एमआरआई) विंडोज के लिए।

इसका इस्तेमाल करने के लिए बस:

gem install color-console 

ColorConsole, विभिन्न रंगों में पाठ की तर्ज outputting Console.Write और 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 

जाएँ अधिक जानकारी के लिए https://github.com/agardiner/color-console पर प्रोजेक्ट मुख पृष्ठ।

संबंधित मुद्दे