উইন্ডোজ কমান্ড লাইনে বিভিন্ন রঙের সাথে কীভাবে প্রতিধ্বনি করা যায়


217

আমি জানি যে color bfকমান্ডটি পুরো কমান্ড লাইন উইন্ডোর রঙ নির্ধারণ করে তবে আমি একটি একক লাইনকে অন্য রঙে মুদ্রণ করতে চেয়েছিলাম।


1
দেখে মনে হবে উইন্ডোজ কমান্ড লাইনে পালানো রঙের কোডগুলি যুক্ত করার কোনও সহজ উপায় আমি নেই। :(
রুই

রুই, যদি Win10 একটি গ্রহণযোগ্য OS সংস্করণ হয়, জেনস এর উত্তর খুঁজে বার করো - এটা করা উচিত তুমি আসলে কি প্রয়োজন, এই প্রশ্নের সাত বছর আগে একটি উত্তর গৃহীত না যেমন এইজন্য: stackoverflow.com/a/38617204/3543437
kayleeFrye_onDeck

উত্তর:


284

আমি একটি একক লাইন অন্য রঙে মুদ্রণ করতে চেয়েছিলাম।

এএনএসআই এস্কেপ সিকোয়েন্সগুলি ব্যবহার করুন।

উইন্ডোজ 10 এর আগে - কনসোলে এএনএসআই রঙের জন্য কোনও দেশীয় সমর্থন নয়

10 এর নীচে উইন্ডোজ সংস্করণের জন্য, উইন্ডোজ কমান্ড কনসোলটি ডিফল্টরূপে আউটপুট রঙিন সমর্থন করে না। হয় আপনি ইনস্টল করতে পারে Cmder , ConEmu , ANSICON বা Mintty (GitBash এবং Cygwin ডিফল্টরূপে ব্যবহৃত) আপনার উইন্ডোজ কমান্ড কনসোলে সমর্থন শোভা যোগ করতে।

উইন্ডোজ 10 - কমান্ড লাইন রং

উইন্ডোজ 10 থেকে শুরু করে উইন্ডোজ কনসোলটি এএনএসআই এস্কেপ সিকোয়েন্স এবং ডিফল্টরূপে কিছু রঙ সমর্থন করে। নভেম্বরে 2015 এর থ্রেশহোল্ড 2 আপডেটের সাহায্যে ফিচারটি প্রেরণ করা হয়েছে।

এমএসডিএন ডকুমেন্টেশন

আপডেট (05-2019): রঙিনটুল আপনাকে কনসোলের রঙিন স্কিম পরিবর্তন করতে সক্ষম করে। এটি মাইক্রোসফ্টের অংশ টার্মিনালের প্রকল্পের ।

ডেমো

এখানে চিত্র বর্ণনা লিখুন

ব্যাচ কমান্ড

win10colors.cmdদ্বারা লিখিত হয় মিশেল Locati :

@echo off
cls
echo [101;93m STYLES [0m
echo ^<ESC^>[0m [0mReset[0m
echo ^<ESC^>[1m [1mBold[0m
echo ^<ESC^>[4m [4mUnderline[0m
echo ^<ESC^>[7m [7mInverse[0m
echo.
echo [101;93m NORMAL FOREGROUND COLORS [0m
echo ^<ESC^>[30m [30mBlack[0m (black)
echo ^<ESC^>[31m [31mRed[0m
echo ^<ESC^>[32m [32mGreen[0m
echo ^<ESC^>[33m [33mYellow[0m
echo ^<ESC^>[34m [34mBlue[0m
echo ^<ESC^>[35m [35mMagenta[0m
echo ^<ESC^>[36m [36mCyan[0m
echo ^<ESC^>[37m [37mWhite[0m
echo.
echo [101;93m NORMAL BACKGROUND COLORS [0m
echo ^<ESC^>[40m [40mBlack[0m
echo ^<ESC^>[41m [41mRed[0m
echo ^<ESC^>[42m [42mGreen[0m
echo ^<ESC^>[43m [43mYellow[0m
echo ^<ESC^>[44m [44mBlue[0m
echo ^<ESC^>[45m [45mMagenta[0m
echo ^<ESC^>[46m [46mCyan[0m
echo ^<ESC^>[47m [47mWhite[0m (white)
echo.
echo [101;93m STRONG FOREGROUND COLORS [0m
echo ^<ESC^>[90m [90mWhite[0m
echo ^<ESC^>[91m [91mRed[0m
echo ^<ESC^>[92m [92mGreen[0m
echo ^<ESC^>[93m [93mYellow[0m
echo ^<ESC^>[94m [94mBlue[0m
echo ^<ESC^>[95m [95mMagenta[0m
echo ^<ESC^>[96m [96mCyan[0m
echo ^<ESC^>[97m [97mWhite[0m
echo.
echo [101;93m STRONG BACKGROUND COLORS [0m
echo ^<ESC^>[100m [100mBlack[0m
echo ^<ESC^>[101m [101mRed[0m
echo ^<ESC^>[102m [102mGreen[0m
echo ^<ESC^>[103m [103mYellow[0m
echo ^<ESC^>[104m [104mBlue[0m
echo ^<ESC^>[105m [105mMagenta[0m
echo ^<ESC^>[106m [106mCyan[0m
echo ^<ESC^>[107m [107mWhite[0m
echo.
echo [101;93m COMBINATIONS [0m
echo ^<ESC^>[31m                     [31mred foreground color[0m
echo ^<ESC^>[7m                      [7minverse foreground ^<-^> background[0m
echo ^<ESC^>[7;31m                   [7;31minverse red foreground color[0m
echo ^<ESC^>[7m and nested ^<ESC^>[31m [7mbefore [31mnested[0m
echo ^<ESC^>[31m and nested ^<ESC^>[7m [31mbefore [7mnested[0m

11
@ জেনস এ। কোচ - এটি আমার উইন্ডোজে কাজ করছে না 10 কনসোল (
সেন্টিমিটার

40
ঠিক আছে. সাহায্য করার জন্য ধন্যবাদ. .cmdবা .bat- উভয়েরই কাজ করা উচিত। তবে, আমি মনে করি কেন আমি এটি জানি না কেন এটি কাজ করে না: স্ট্যাকওভারফ্লোতে পোস্ট করার পরে মনে হয় পালানোর প্রতীকটি সরিয়ে দেওয়া হয়েছে। দয়া করে আমার উত্তর থেকে সামগ্রীটি অনুলিপি করবেন না, পরিবর্তে এখান থেকে সামগ্রীটি ব্যবহার করুন: gist.githubusercontent.com/MLocati/…
জেনস এ। কোচ

28
এর আগে আমাকে ESCনোটপ্যাড ++ এ কখনও জেনারেট করতে হয়নি ... আপনি নামপ্যাড এবং বাম L-ALT027
এএলটি

3
বিটিডব্লিউ, যে কেউ বেশিরভাগ দিন প্রচুর ব্যাচ তৈরি করেন এবং ব্যবহার করেন, এই উত্তরটি আমার সামগ্রিক টুলসেটটিকে নান্দনিক উপায়ে উন্নত করেছে! ভিবি ব্যবহার করছেন? কোনভাবেই না. এই যেতে উপায়!
kayleeFrye_onDeck

4
আপনি ESCএইভাবে কোনও ব্যাচের ফাইলে একটি অক্ষর তৈরি করতে পারেন :for /F %%a in ('echo prompt $E ^| cmd') do set "ESC=%%a"
আছিনী

56

এটি একটি স্ব-সংকলিত ব্যাট / নেট হাইব্রিড (হিসাবে সংরক্ষণ করা উচিত .BAT) এমন কোনও সিস্টেমে ব্যবহার করা যেতে পারে যা। নেট ফ্রেমওয়ার্ক ইনস্টল করা আছে (এটি NET ফ্রেমওয়ার্ক ছাড়া উইন্ডো দেখতে খুব বিরল বিষয় এমনকি প্রাচীনতম এক্সপি / 2003 এর জন্যও ইনস্টলেশন)। এটি কেবলমাত্র বর্তমান লাইনের জন্য বিভিন্ন ব্যাকগ্রাউন্ড / অগ্রভাগের রঙের সাথে স্ট্রিং প্রিন্ট করতে সক্ষম একটি এক্সইপ তৈরি করতে jscript.net সংকলক ব্যবহার করে।

@if (@X)==(@Y) @end /* JScript comment
@echo off
setlocal

for /f "tokens=* delims=" %%v in ('dir /b /s /a:-d  /o:-n "%SystemRoot%\Microsoft.NET\Framework\*jsc.exe"') do (
   set "jsc=%%v"
)

if not exist "%~n0.exe" (
    "%jsc%" /nologo /out:"%~n0.exe" "%~dpsfnx0"
)

%~n0.exe %*

endlocal & exit /b %errorlevel%

*/

import System;

var arguments:String[] = Environment.GetCommandLineArgs();

var newLine = false;
var output = "";
var foregroundColor = Console.ForegroundColor;
var backgroundColor = Console.BackgroundColor;
var evaluate = false;
var currentBackground=Console.BackgroundColor;
var currentForeground=Console.ForegroundColor;


//http://stackoverflow.com/a/24294348/388389
var jsEscapes = {
  'n': '\n',
  'r': '\r',
  't': '\t',
  'f': '\f',
  'v': '\v',
  'b': '\b'
};

function decodeJsEscape(_, hex0, hex1, octal, other) {
  var hex = hex0 || hex1;
  if (hex) { return String.fromCharCode(parseInt(hex, 16)); }
  if (octal) { return String.fromCharCode(parseInt(octal, 8)); }
  return jsEscapes[other] || other;
}

function decodeJsString(s) {
  return s.replace(
      // Matches an escape sequence with UTF-16 in group 1, single byte hex in group 2,
      // octal in group 3, and arbitrary other single-character escapes in group 4.
      /\\(?:u([0-9A-Fa-f]{4})|x([0-9A-Fa-f]{2})|([0-3][0-7]{0,2}|[4-7][0-7]?)|(.))/g,
      decodeJsEscape);
}


function printHelp( ) {
   print( arguments[0] + "  -s string [-f foreground] [-b background] [-n] [-e]" );
   print( " " );
   print( " string          String to be printed" );
   print( " foreground      Foreground color - a " );
   print( "                 number between 0 and 15." );
   print( " background      Background color - a " );
   print( "                 number between 0 and 15." );
   print( " -n              Indicates if a new line should" );
   print( "                 be written at the end of the ");
   print( "                 string(by default - no)." );
   print( " -e              Evaluates special character " );
   print( "                 sequences like \\n\\b\\r and etc ");
   print( "" );
   print( "Colors :" );
   for ( var c = 0 ; c < 16 ; c++ ) {
        
        Console.BackgroundColor = c;
        Console.Write( " " );
        Console.BackgroundColor=currentBackground;
        Console.Write( "-"+c );
        Console.WriteLine( "" );
   }
   Console.BackgroundColor=currentBackground;
   
   

}

function errorChecker( e:Error ) {
        if ( e.message == "Input string was not in a correct format." ) {
            print( "the color parameters should be numbers between 0 and 15" );
            Environment.Exit( 1 );
        } else if (e.message == "Index was outside the bounds of the array.") {
            print( "invalid arguments" );
            Environment.Exit( 2 );
        } else {
            print ( "Error Message: " + e.message );
            print ( "Error Code: " + ( e.number & 0xFFFF ) );
            print ( "Error Name: " + e.name );
            Environment.Exit( 666 );
        }
}

function numberChecker( i:Int32 ){
    if( i > 15 || i < 0 ) {
        print("the color parameters should be numbers between 0 and 15");
        Environment.Exit(1);
    }
}


if ( arguments.length == 1 || arguments[1].toLowerCase() == "-help" || arguments[1].toLowerCase() == "-help"   ) {
    printHelp();
    Environment.Exit(0);
}

for (var arg = 1; arg <= arguments.length-1; arg++ ) {
    if ( arguments[arg].toLowerCase() == "-n" ) {
        newLine=true;
    }
    
    if ( arguments[arg].toLowerCase() == "-e" ) {
        evaluate=true;
    }
    
    if ( arguments[arg].toLowerCase() == "-s" ) {
        output=arguments[arg+1];
    }
    
    
    if ( arguments[arg].toLowerCase() == "-b" ) {
        
        try {
            backgroundColor=Int32.Parse( arguments[arg+1] );
        } catch(e) {
            errorChecker(e);
        }
    }
    
    if ( arguments[arg].toLowerCase() == "-f" ) {
        try {
            foregroundColor=Int32.Parse(arguments[arg+1]);
        } catch(e) {
            errorChecker(e);
        }
    }
}

Console.BackgroundColor = backgroundColor ;
Console.ForegroundColor = foregroundColor ;

if ( evaluate ) {
    output=decodeJsString(output);
}

if ( newLine ) {
    Console.WriteLine(output);  
} else {
    Console.Write(output);
    
}

Console.BackgroundColor = currentBackground;
Console.ForegroundColor = currentForeground;

এখানে সহায়তা বার্তা:

এখানে চিত্র বর্ণনা লিখুন

উদাহরণ :

coloroutput.bat -s "aa\nbb\n\u0025cc" -b 10 -f 3 -n -e

আপনি এই স্ক্রিপ্টটি এখানেও খুঁজে পেতে পারেন ।

আপনি কার্লোসের রঙিন ফাংশনটিও যাচাই করতে পারেন -> http://www.dostips.com/forum/viewtopic.php?f=3&t=4453


13
কিভাবে শীতল হয়. একটি ব্যাট ফাইল যা এতে থাকা জেএসক্রিপ্টটি সংকলন করে এবং কেবল এটির প্রয়োজন হলে - আমি ভালভাবে প্রভাবিত। এমনকি একটি জাস্ক্রিপ্ট সংকলক সেখানে বসে থাকার জন্য অপেক্ষা করছিল তাও জানতেন না। আপনি মাসের জন্য আমার "দারুণ পুরষ্কার" পান। আপনার উল্লেখ করা উচিত যে এর প্রথম ব্যবহারটি ধীর হবে (সংকলনের কারণে)।
গ্রাহাম

4
এই চরমটিতে যাওয়ার জন্য আমার খুব খারাপ রঙের দরকার নেই, তবে কৌশলটি সত্যই চিত্তাকর্ষক এবং আমি অন্য কোথাও এটি নিজেকে ব্যবহার করতে দেখতে পাচ্ছি।
EM0

47

এটি দুর্দান্ত উত্তর নয়, তবে আপনি যদি জানেন ওয়ার্কস্টেশনটির পাওয়ারশেল রয়েছে তবে আপনি এ জাতীয় কিছু করতে পারেন (বিএটি / সিএমডি স্ক্রিপ্ট ধরে):

CALL:ECHORED "Print me in red!"

:ECHORED
%Windir%\System32\WindowsPowerShell\v1.0\Powershell.exe write-host -foregroundcolor Red %1
goto:eof

সম্পাদনা: (এখন আরও সহজ!)

এটি একটি পুরানো উত্তর তবে আমি বুঝতে পেরেছি যে আমি কিছুটা স্পষ্ট করব এবং কিছুটা সহজ করব

চিত্র

পাওয়ারশেল এখন উইন্ডোজ 7 এর সমস্ত সংস্করণে অন্তর্ভুক্ত রয়েছে Therefore সুতরাং এই উত্তরের বাক্য গঠনটি একটি সহজ আকারে সংক্ষিপ্ত করা যেতে পারে:

  • পথ যেহেতু এটি এনভায়রনমেন্ট ভেরিয়েবল আগে থেকেই হওয়া উচিত উল্লেখ করা প্রয়োজন নেই।
  • দ্ব্যর্থহীন কমান্ড সংক্ষিপ্ত করা যেতে পারে । উদাহরণস্বরূপ আপনি করতে পারেন:
    • -foreপরিবর্তে ব্যবহার করুন-foregroundcolor
    • -backপরিবর্তে ব্যবহার করুন-backgroundcolor
  • কমান্ডটি মূলত ' উপরের মতো আলাদা ব্যাচ ফাইল তৈরির পরিবর্তে ' ইনলাইন ব্যবহার করতে পারে echo

উদাহরণ:

powershell write-host -fore Cyan This is Cyan text
powershell write-host -back Red This is Red background

অধিক তথ্য:

রং এবং আরও তথ্যের সম্পূর্ণ তালিকা পাওয়া যায়
- PowerShell জন্য ডকুমেন্টেশনWrite-Host



14
অভিবাদন, এটি আমার পক্ষে কাজ করে তবে এটি খুব আস্তে আস্তেoooooooooooooo।
ওয়েনার

4
আমি বুঝতে পারি যে এটি একটি উত্তর সরবরাহ করে যা সমাধান সরবরাহ করে তবে পাওয়ারশেল? বিতৃষ্ণা।
SgtPooki

2
এ কারণেই আমি "এটি দুর্দান্ত উত্তর নয়" দিয়ে শুরু করেছি। আমি পাওয়ারশেলকে বেশ পছন্দ করি তবে এটির জন্য এটি ওভারকিল। আপনি যদি লক্ষ্য মেশিনে এটি মোতায়েনের সাথে মোকাবিলা করতে পারেন তবে আনসিকন আরও ভাল।
আইয়েন

এই উত্তরের জন্য আপনাকে ধন্যবাদ। পাওয়ারশেলের একটি ব্যাচ ফাইল থেকে রঙিন আউটপুট প্রতিধ্বনি করার উপায়টির জন্য আমি উচ্চ এবং নিচু দেখেছি এবং এটিই ছিল একমাত্র। এটি মুদ্রণ করতে কেন এত বেশি সময় লাগে তা নিশ্চিত নয় (প্রতিটি কলের সাথে 1 সেকেন্ড অপেক্ষা আছে) তবে কমপক্ষে আমি এটি করতে পারি। ধন্যবাদ!
পিজাফিল্মগুলি

29

উইন্ডোজ 10 - টিএইচ 2 এবং উপরে:

(ওরফে সংস্করণ 1511, বিল্ড 10586, রিলিজ 2015-11-10)

কমান্ড প্রম্পটে:

echo ^[[32m HI ^[[0m

আসল কীগুলি ব্যবহার করে: প্রতিধ্বনি Ctrl+ [[32m HI Ctrl+[[0mEnter

আপনার নীচে একটি সবুজ "এইচআই" দেখতে হবে।

কোড নম্বরগুলি এখানে পাওয়া যাবে:

নোটপ্যাড:

এটি নোটপ্যাডে সংরক্ষণ করতে, আপনি এটিতে ESC টাইপ করতে পারেন: Alt+ 027নামপ্যাডের সাথে, তারপর [32mঅংশটি। আমি যখন ল্যাপটপে ছিলাম তখন অন্য কৌশল, শুরু করার জন্য উপরের লাইনটি কোনও ফাইলে পুনর্নির্দেশ করুন, তারপরে কেটে পেস্ট করুন:

echo echo ^[[32m HI ^[[0m >> batch_file.cmd

3
Alt + 027 ঠিক আমার যা প্রয়োজন ছিল!
আলেকসান্দার স্টেলম্যাকজোনেক

1
Alt + 027 Eclipse / জাভাতে কাজ করে না .. চেষ্টাও করেছে \033কিন্তু না ... জাভাতে আমি কীভাবে এটি করতে পারি?
derHugo

উইন্ডোজ 10 এবং উপরে, এটি ডস এবং নোটপ্যাড ++ সম্পাদকে কাজ করে। ধন্যবাদ!
জুনিয়র মেহে

17

আপনি মুদ্রণের জন্য শব্দের নাম দিয়ে কেবল ফাইল তৈরি করতে পারেন, ফাইন্ডস্ট্র্ট ব্যবহার করেন যা রঙে মুদ্রণ করতে পারে এবং তারপরে ফাইলটি মুছে দেয়। এই উদাহরণটি ব্যবহার করে দেখুন:

@echo off
SETLOCAL EnableDelayedExpansion
for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do rem"') do (
  set "DEL=%%a"
)

call :ColorText 0a "green"
call :ColorText 0C "red"
call :ColorText 0b "cyan"
echo(
call :ColorText 19 "blue"
call :ColorText 2F "white"
call :ColorText 4e "yellow"

goto :eof

:ColorText
echo off
<nul set /p ".=%DEL%" > "%~2"
findstr /v /a:%1 /R "^$" "%~2" nul
del "%~2" > nul 2>&1
goto :eof

color /?রঙের একটি তালিকা পেতে চালান ।


3
এটি উইন্ডোজ কমান্ড লাইনে রঙ নির্ধারণ করে। আপনি কি তা ব্যাখ্যা করতে পারেন?
ফিচারক্রিপ

2
ঠিক আছে, এটি মুদ্রণের জন্য শব্দের নাম সহ ফাইলগুলি তৈরি করে, ফাইন্ডস্ট্র্ট ব্যবহার করে যা রঙে মুদ্রণ করতে পারে এবং তারপরে ফাইলটি মুছে দেয়।
ফিচারক্রিপ

2
চিত্তাকর্ষক! নোট করুন যে রঙের কোডগুলি ভুল। "রঙ / চালাবেন?" আসল রঙ কোডগুলি দেখতে to
yoyo

3
নোট করুন যে সন্ধানকারী কেবলমাত্র ফাইলের নামটি সংগ্রহ করতে পারে যার অর্থ আপনি এই কৌশলটি স্ট্রিংগুলির জন্য অবৈধ পথের অক্ষরগুলি ব্যবহার করতে পারবেন না।
yoyo

3
এছাড়াও লক্ষণীয়, এটি একই ডিরেক্টরিতে ফাইলগুলি ওভাররাইট করে দেবে যদি তারা আপনি কী মুদ্রণের চেষ্টা করছেন তার নাম ভাগ করে নেয় ... এটি মোটেই ভাল নয়।
BrainSlugs83

14

আপনি উইন্ডোজের পুরানো সংস্করণগুলিতে এএনএসআই টার্মিনাল কোড সক্ষম করতে আনসিকন ব্যবহার করতে পারেন । আমি উইন্ডোজ এক্সপি এবং উইন্ডোজ 7 এ 32 এবং 64 বিট সংস্করণ ব্যবহার করেছি।


উইন্ডোজ 8.1 এ এটি কাজ করতে পারে না। আমি চেষ্টা করে ইনস্টল করে প্রতিবার ক্রাশ হচ্ছে।
EHerman

@ ইহারম্যান সম্ভবত এই প্রশ্নটি সাহায্য করবে।
ব্রায়ান অ্যাশ

উইন 10 এর পরবর্তী সংস্করণগুলিতে অ্যানসিকনের প্রয়োজন নেই there এটি সেখানে ব্যবহার করার চেষ্টা করবেন না।
গ্রিঙ্গো সুভেভ

6

আমিও সিএমডি তে সঠিক রঙিনতার অভাবে বিরক্ত হয়েছি, তাই আমি এগিয়ে গিয়ে সেন্টিমিডি কালার তৈরি করেছি । এটি কেবল একটি স্টাডাউট প্রক্সি, যা এএনএসআই / ভিটি 100 নিয়ন্ত্রণ সিকোয়েন্সগুলির সীমাবদ্ধ সন্ধান করে (অন্য কথায়, যেমন বাশের মতো), অর্থাৎ echo \033[31m RED \033[0m DEFAULT | cmdcolor.exe

ব্যবহার এবং ডাউনলোড


এটি দুর্দান্ত, এবং আমি এটিকে আমার কাজকর্মের দৈত্য বিল্ড স্ক্রিপ্টের মেনু সিস্টেমে রেখেছি। আমার কাছে কেবল গরুর মাংস হ'ল আপনি যে পৃষ্ঠায় সরবরাহ করেন সেই বাইনারিটি -৪-বিটকে লক্ষ্য করে, তাই এটি আমাদের 32-বিট বিল্ড মেশিনে কাজ করবে না। তবে কেবল উত্সটি দখল করা এবং নিজেকে সংকলন করা কোনও সমস্যা ছিল না।
ধান

তবে এটি 32-বিট :) এখানে জিএনইউ ফাইলটির আউটপুট রয়েছে:cmdcolor.exe; PE32 executable for MS Windows (console) Intel 80386 32-bit
অ্যালেক মেভ

এটি অদ্ভুত ... এক্সপি প্রো এটি চালাতে অস্বীকার করেছিল, তবে এটি আমার উইন 64৪ বাক্সে দৌড়ে গেছে। আমি উইন 32 কে লক্ষ্য করে ভিজ্যুয়াল সি ++ দিয়ে সংকলন করেছি এবং এটি ভাল ছিল।
ধান

হু ... সম্ভবত কারণ upx। আপনি কি আমাকে ইমেলের মাধ্যমে যোগাযোগ করতে পারেন, দয়া করে?
আলেক মেভ

6

আমি এটি দেখেছিলাম কারণ আমি উইন 7 ব্যাচের ফাইলে কিছু সাধারণ পাঠ্য রঙ প্রবর্তন করতে চেয়েছিলাম। এটিই আমি নিয়ে এসেছি। আপনার সাহায্যের জন্য ধন্যবাদ.

@echo off
cls && color 08

rem .... the following line creates a [DEL] [ASCII 8] [Backspace] character to use later
rem .... All this to remove [:]
for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do rem"') do (set "DEL=%%a")

echo.

<nul set /p="("
call :PainText 09 "BLUE is cold"    && <nul set /p=")  ("
call :PainText 02 "GREEN is earth"  && <nul set /p=")  ("
call :PainText F0 "BLACK is night"  && <nul set /p=")"
echo.
<nul set /p="("
call :PainText 04 "RED is blood"    && <nul set /p=")  ("
call :PainText 0e "YELLOW is pee"   && <nul set /p=")  ("
call :PainText 0F "WHITE all colors"&& <nul set /p=")"

goto :end

:PainText
<nul set /p "=%DEL%" > "%~2"
findstr /v /a:%1 /R "+" "%~2" nul
del "%~2" > nul
goto :eof

:end
echo.
pause

5

ইতিমধ্যে 250 জনেরও বেশি আপোভেট সহ একটি স্বীকৃত উত্তর রয়েছে। আমি এখনও অবদান রাখার কারণটি হ'ল escapeপ্রতিধ্বনির জন্য প্রয়োজনীয় চরিত্রটি অনেক সম্পাদক (আমি ব্যবহার করছি, উদাহরণস্বরূপ, এমএস কোড) এবং অন্যান্য সমস্ত সমাধানগুলির জন্য কিছু তৃতীয় পক্ষের (নন-উইন্ডোজ-ডিফল্ট) সফ্টওয়্যারের টুকরোগুলি প্রয়োজন।

কেবল প্লেইন ব্যাচের কমান্ডগুলি ব্যবহার করে ওয়ার্ক-এচারটি PROMPTপরিবর্তে ব্যবহার করা হচ্ছে ECHOPROMPTকমান্ড গ্রহণ escapeএকটি হিসাবে একটি কোনো-সম্পাদক বান্ধব ভাবে চরিত্র $Eচরিত্র অনুক্রম। (কেবলমাত্র প্রতিস্থাপন Escমধ্যে হওয়া ASCII এস্কেপ কোড সহ) $E

এখানে একটি ডেমো কোড রয়েছে:

@ECHO OFF

    :: Do not pollute environment with the %prompt.bak% variable
    :: ! forgetting ENDLOCAL at the end of the batch leads to prompt corruption
    SETLOCAL

    :: Old prompt settings backup
    SET prompt.bak=%PROMPT%

    :: Entering the "ECHO"-like section

        :: Forcing prompt to display after every command (see below)
        ECHO ON

        :: Setting the prompt using the ANSI Escape sequence(s)
        :: - Always start with $E[1A, otherwise the text would appear on a next line
        :: - Then the decorated text follows
        :: - And it all ends with $E30;40m, which makes the following command invisible
        ::   - assuming default background color of the screen
        @ PROMPT $E[1A$E[30;42mHELLO$E[30;40m

        :: An "empty" command that forces the prompt to display. 
        :: The word "rem" is displayed along with the prompt text but is made invisible
        rem

        :: Just another text to display
        @ PROMPT $E[1A$E[33;41mWORLD$E[30;40m
        rem

        :: Leaving the "ECHO"-like section
        @ECHO OFF

    :: Or a more readable version utilizing the cursor manipulation ASCII ESC sequences

        :: the initial sequence
        PROMPT $E[1A
        :: formating commands
        PROMPT %PROMPT%$E[32;44m
        :: the text
        PROMPT %PROMPT%This is an "ECHO"ed text...
        :: new line; 2000 is to move to the left "a lot"
        PROMPT %PROMPT%$E[1B$E[2000D
        :: formating commands fro the next line
        PROMPT %PROMPT%$E[33;47m
        :: the text (new line)
        PROMPT %PROMPT%...spreading over two lines
        :: the closing sequence
        PROMPT %PROMPT%$E[30;40m

        :: Looks like this without the intermediate comments:
        :: PROMPT $E[1A
        :: PROMPT %PROMPT%$E[32;44m
        :: PROMPT %PROMPT%This is an "ECHO"ed text...
        :: PROMPT %PROMPT%$E[1B$E[2000D
        :: PROMPT %PROMPT%$E[33;47m
        :: PROMPT %PROMPT%...spreading over two lines
        :: PROMPT %PROMPT%$E[30;40m

        :: show it all at once!
        ECHO ON
        rem
        @ECHO OFF

    :: End of "ECHO"-ing

    :: Setting prompt back to its original value
    :: - We prepend the settings with $E[37;40m in case
    ::   the original prompt settings do not specify color
    ::   (as they don't by default).
    :: - If they do, the $E[37;40m will become overridden, anyway.
    :: ! It is important to write this command 
    ::   as it is with `ENDLOCAL` and in the `&` form.
    ENDLOCAL & PROMPT $E[37;40m%prompt.bak%

EXIT /B 0

দ্রষ্টব্য: একমাত্র ব্যর্থতা হ'ল এই কৌশলটি ব্যবহারকারীর সিএমডি রঙিন সেটিংসের সাথে সংঘর্ষ হয় (color কমান্ড বা সেটিংস) সাথে স্পষ্টভাবে জানা না গেলে coll

- আশা করি প্রাথমিকভাবে উল্লিখিত কারণগুলির জন্য এটিই আমার পক্ষে গ্রহণযোগ্য একমাত্র সমাধান helps -

সম্পাদনা করুন:

মন্তব্যের উপর ভিত্তি করে, আমি @ জিব দ্বারা অনুপ্রাণিত আরেকটি স্নিপেট সংযুক্ত করছি। এটা তোলে:

  • "Esc" অক্ষর রানটাইম কীভাবে প্রাপ্ত এবং ব্যবহার করবেন তা দেখায় (এটি কোনও সম্পাদকের কাছে প্রবেশের পরিবর্তে) (জেবের সমাধান)
  • "নেটিভ" ECHOকমান্ড (গুলি) ব্যবহার করে
  • সুতরাং এটি স্থানীয় PROMPTমানকে প্রভাবিত করে না
  • প্রদর্শন করে যে ECHOআউটপুট PROMPTরঙ করা অনিবার্যভাবে রঙকে প্রভাবিত করে তাই যাইহোক, রঙ অবশ্যই পুনরায় সেট করা উচিত
@ECHO OFF

    :: ! To observe color effects on prompt below in this script
    ::   run the script from a fresh cmd window with no custom
    ::   prompt settings

    :: Only not to pollute the environment with the %\e% variable (see below)
    :: Not needed because of the `PROMPT` variable
    SETLOCAL

        :: Parsing the `escape` character (ASCII 27) to a %\e% variable
        :: Use %\e% in place of `Esc` in the [http://ascii-table.com/ansi-escape-sequences.php]
        FOR /F "delims=#" %%E IN ('"prompt #$E# & FOR %%E IN (1) DO rem"') DO SET "\e=%%E"

        :: Demonstrate that prompt did not get corrupted by the previous FOR
        ECHO ON
        rem : After for
        @ECHO OFF

        :: Some fancy ASCII ESC staff
        ECHO [          ]
        FOR /L %%G IN (1,1,10) DO (
            TIMEOUT /T 1 > NUL
            ECHO %\e%[1A%\e%[%%GC%\e%[31;43m.
            ECHO %\e%[1A%\e%[11C%\e%[37;40m]
        )

        :: ECHO another decorated text
        :: - notice the `%\e%[30C` cursor positioning sequence
        ::   for the sake of the "After ECHO" test below
        ECHO %\e%[1A%\e%[13C%\e%[32;47mHELLO WORLD%\e%[30C

        :: Demonstrate that prompt did not get corrupted by ECHOing
        :: neither does the cursor positioning take effect.
        :: ! But the color settings do.
        ECHO ON
        rem : After ECHO
        @ECHO OFF

    ENDLOCAL

    :: Demonstrate that color settings do not reset
    :: even when out of the SETLOCAL scope
    ECHO ON
    rem : After ENDLOCAL
    @ECHO OFF

    :: Reset the `PROMPT` color
    :: - `PROMPT` itself is untouched so we did not need to backup it.
    :: - Still ECHOING in color apparently collide with user color cmd settings (if any).
    :: ! Resetting `PROMPT` color this way extends the `PROMPT`
    ::   by the initial `$E[37;40m` sequence every time the script runs.
    :: - Better solution then would be to end every (or last) `ECHO` command
    ::   with the `%\e%[37;40m` sequence and avoid setting `PROMPT` altogether.
    ::   which makes this technique preferable to the previous one (before EDIT)
    :: - I am keeping it this way only to be able to
    ::   demonstrate the `ECHO` color effects on the `PROMPT` above.
    PROMPT $E[37;40m%PROMPT%

    ECHO ON
    rem : After PROMPT color reset
    @ECHO OFF

EXIT /B 0

খুব আকর্ষণীয় কৌশল। আমি এটি দিয়ে github.com/VonC/batcolors আপডেট করার প্রয়োজন কিনা তা আমি দেখতে পাব । সম্মত।
ভোনসি

@ ভনসি আপনি এডিটরটিতে প্রবেশের প্রয়োজন ছাড়াই আপনি সহজেই একটি পরিবর্তনশীল তৈরি করতে পারেন, যাতে পালানোর চ্যাটারটি থাকে containing for /F "delims=#" %%E in ('"prompt #$E# & for %%E in (1) do rem"') do set "\e=%%E"
jeb

@ জেব আপনারা কি " ব্যাটকালার / ইকো.ব্যাটecho ব্যবহারের বিপরীতে" বলতে চান ?
ভোনসি

@ ভনসি হ্যাঁ, আপনার set ASCII27=←সাথে প্রতিস্থাপন করুন for /F "delims=#" %%E in ('"prompt #$E# & for %%E in (1) do rem"') do set "ASCII27=%%E"। এটি প্রম্পট স্থায়ীভাবে পরিবর্তন না করেই প্রম্পট কমান্ড দ্বারা নির্মিত পলায়ন চরিত্রটি ব্যবহার করে (কারণ promptকমান্ডটি শিশু প্রক্রিয়াতে কার্যকর করা হয়)। BTW। আপনার echos.batকিছু অপ্টিমাইজেশন সম্ভাবনা রয়েছে ...
জেব

@ জেব "আপনার ইকোস.বাটের কিছু অপ্টিমাইজেশন সম্ভাবনা রয়েছে": আমি এটি সম্পর্কে নিশ্চিত :) টানুন অনুরোধগুলি স্বাগত জানানো হয় (এএসসিআইআই 27 এবং অন্যান্য অপটিমাইজেশনের জন্য উভয়ই)
ভোনসি

4

আমি উপরের কয়েকটি মন্তব্যে উল্লিখিত একটি সমস্যার সমাধান করার জন্য একটি উত্তর যুক্ত করছি: যে কোনও লুপের অভ্যন্তরে (প্রকৃতপক্ষে কোনও কোডের প্রথম বন্ধনী ব্লকের অভ্যন্তরে) ইনলাইন অ্যাসি বর্ণ কোডগুলি খারাপ আচরণ করতে পারে। নীচের .bat কোডটি দেখায় (1) ইনলাইন কালার কোডের ব্যবহার, (২) ইনলাইন কালার কোডগুলি যখন কোনও ফর লুপে বা কোডের একটি প্রথম বন্ধনের মধ্যে ব্যবহার করা হয় তখন রঙের ব্যর্থতা দেখা যায় এবং (3) এর সমাধান সমস্যাটি. .Bat কোডটি কার্যকর করলে, 2 এবং 3 টি পরীক্ষা রঙকোড ব্যর্থতা প্রদর্শন করে এবং 4 পরীক্ষাটি কোনও ব্যর্থতা দেখায় না কারণ এটি সমাধানটি কার্যকর করে।

[2020-04-07 সম্পাদনা করুন: আমি আরও একটি সমাধান পেয়েছি যা সম্ভবত সাব্রোটিন কল করার চেয়ে সম্ভবত আরও দক্ষ। নিম্নলিখিত লাইনের মতো বন্ধনীগুলিতে FINDSTR বাক্যাংশটি বন্ধ করুন:

   echo success | (findstr /R success)

ENDEDIT]

দ্রষ্টব্য: আমার (সীমাবদ্ধ) অভিজ্ঞতায়, কোড ব্লকের অভ্যন্তরে FINDSTR এ পাইপ দেওয়ার পরে কেবল রঙের সমস্যাটি উদ্ভাসিত হয়। নিম্নলিখিত .bat সমস্যাটি পুনরুত্পাদন করে। এফআইএনডিএসআরটিতে পাইপ দেওয়ার চেয়ে কালার কোড সমস্যাটি আরও সাধারণ is যদি কেউ সমস্যার প্রকৃতিটি ব্যাখ্যা করতে পারেন এবং যদি এটির সমাধানের আরও ভাল উপায় থাকে তবে আমি এটির প্রশংসা করব।

@goto :main
:resetANSI
EXIT /B
rem  The resetANSI subroutine is used to fix the colorcode
rem  bug, even though it appears to do nothing.

:main
@echo off
setlocal EnableDelayedExpansion

rem  Define some useful colorcode vars:
for /F "delims=#" %%E in ('"prompt #$E# & for %%E in (1) do rem"') do set "ESCchar=%%E"
set "green=%ESCchar%[92m"
set "yellow=%ESCchar%[93m"
set "magenta=%ESCchar%[95m"
set "cyan=%ESCchar%[96m"
set "white=%ESCchar%[97m"
set "black=%ESCchar%[30m"

echo %white%Test 1 is NOT in a FOR loop nor within parentheses, and color works right.
   echo %yellow%[Test 1] %green%This is Green, %magenta%this is Magenta, and %yellow%this is Yellow.
   echo %Next, the string 'success' will be piped to FINDSTR...
   echo success | findstr /R success
   echo %magenta%This is magenta and FINDSTR found and displayed 'success'.%yellow%
   echo %green%This is green.
echo %cyan%Test 1 completed.

echo %white%Test 2 is within parentheses, and color stops working after the pipe to FINDSTR.
(  echo %yellow%[Test 2] %green%This is Green, %magenta%this is Magenta, and %yellow%this is Yellow.
   echo %Next, the string 'success' will be piped to FINDSTR...
   echo success | findstr /R success
   echo %magenta%This is supposed to be magenta and FINDSTR found and displayed 'success'.
   echo %green%This is supposed to be green.
)
echo %cyan%Test 2 completed.

echo %white%Test 3 is within a FOR loop, and color stops working after the pipe to FINDSTR.
for /L %%G in (3,1,3) do (
   echo %yellow%[Test %%G] %green%This is Green, %magenta%this is Magenta, and %yellow%this is Yellow.
   echo %Next, the string 'success' will be piped to FINDSTR...
   echo success | findstr /R success
   echo %magenta%This is supposed to be magenta and FINDSTR found and displayed 'success'.
   echo %green%This is supposed to be green.
)
echo %cyan%Test 3 completed.

echo %white%Test 4 is in a FOR loop but color works right because subroutine :resetANSI is 
echo called after the pipe to FINDSTR, before the next color code is used.
for /L %%G in (4,1,4) do (
   echo %yellow%[Test %%G] %green%This is Green, %magenta%this is Magenta, and %yellow%this is Yellow.
   echo %Next, the string 'success' will be piped to FINDSTR...
   echo success | findstr /R success
   call :resetANSI
   echo %magenta%This is magenta and FINDSTR found and displayed 'success'.
   echo %green%This is green.
)
echo %cyan%Test 4 completed.%white%

EXIT /B

2

আপনি চেকো ব্যবহার করতে পারেন .. আপনি এটি সরাসরি আপনার স্ক্রিপ্টে এম্বেড করার জন্যও ব্যবহার করতে পারেন যাতে আপনাকে .com বা .exe বয়ে বেড়াতে হবে না

http://www.codeproject.com/Articles/17033/Add-Colors-to-Batch-Files


1

আমি স্রেফ উইন 7 হোম থেকে উইন 10 প্রো তে রূপান্তর করেছি এবং অন্যান্য ব্যাচ থেকে কল করা ব্যাচটি প্রতিস্থাপন করতে চাইছি তথ্যের প্রতিধ্বনিতে প্রতিধ্বনিত করতে। উপরে আলোচনা করা বিষয়গুলি পর্যালোচনা করে আমি নিম্নলিখিতটি ব্যবহার করি যা আমার আগের ব্যাচটি সরাসরি প্রতিস্থাপন করবে। বার্তায় "~" যুক্ত করার বিষয়টি লক্ষ্য করুন যাতে স্পেস সহ বার্তাগুলি ব্যবহৃত হতে পারে। কোডগুলি মনে রাখার পরিবর্তে আমি প্রয়োজনীয় রঙগুলির জন্য অক্ষরগুলি ব্যবহার করি।

যদি% 2 এর জন্য স্পেস থাকে তবে "..."% 1 কালো রঙের শক্তিশালী রঙ: আর = রেড জি = গ্রিন ওয়াই = ইয়ালো W = সাদা

ECHO OFF
IF "%1"=="R" ECHO ^[91m%~2[0m
IF "%1"=="G" ECHO ^[92m%~2[0m
IF "%1"=="Y" ECHO ^[93m%~2[0m
IF "%1"=="W" ECHO ^[97m%~2[0m

0

পাঠ্যের রঙ পরিবর্তন করতে আপনাকে একটি এএনএসআই এস্কেপ কোড ক্রম প্রতিধ্বনিত করতে হবে: http://en.wikedia.org/wiki/ANSI_escape_code

এই পালানোর কোডগুলির আর একটি খুব ভাল উত্স হ'ল http://ascii-table.com/ansi-escape-sequences.php


এটি সত্যিই আশাব্যঞ্জক দেখাচ্ছে তবে আমি কীভাবে পালাতে অক্ষরটি এএসসিআইআই 27 প্রতিস্থাপন করব?
রুই

10
উইন্ডোজ কনসোলটি কোনও টার্মিনাল এমুলেটর নয়। এএনএসআই অব্যাহতি সিকোয়েন্সগুলি কেবল কাজ করতে পারে না। আপনি এএনএসআই.এসওয়াইএস লোড করে উইন্ডোজ 9 এক্সকে কোক্স করে রাখতে পারেন তবে আমরা এখনই কিছুটা অতীত হয়েছি।
জোয়ি

0

ColourText.basআপনার ডেস্কটপে ডাকা একটি ফাইলের জন্য নিম্নলিখিত লাইনগুলি রাখুন ।

Imports System
Imports System.IO
Imports System.Runtime.InteropServices
Imports Microsoft.Win32

Public Module MyApplication  
Public Declare Function GetStdHandle Lib "kernel32" Alias "GetStdHandle" (ByVal nStdHandle As Long) As Long
Public Declare Function SetConsoleTextAttribute Lib "kernel32" Alias "SetConsoleTextAttribute" (ByVal hConsoleOutput As Long, ByVal wAttributes As Long) As Long
Public Const STD_ERROR_HANDLE = -12&
Public Const STD_INPUT_HANDLE = -10&
Public Const STD_OUTPUT_HANDLE = -11&

Sub Main()
    Dim hOut as Long
    Dim Ret as Long
    Dim Colour As Long
    Dim Colour1 As Long
    Dim Text As String
    hOut  = GetStdHandle(STD_OUTPUT_HANDLE)
    Colour = CLng("&h" & Split(Command(), " ")(0))
    Colour1 = Clng("&h" & Split(Command(), " ")(1))
    Text = Mid(Command(), 7)
    Ret = SetConsoleTextAttribute(hOut,  Colour)
    Console.Out.WriteLine(text)
    Ret = SetConsoleTextAttribute(hOut, Colour1)
End Sub
End Module

এটি সংরক্ষণ করুন এবং একটি কমান্ড প্রম্পটে নিম্নলিখিত টাইপ করুন।

"C:\Windows\Microsoft.NET\Framework\v4.0.30319\vbc.exe" /target:exe /out:"%userprofile%\desktop\ColourText.exe" "%userprofile%\desktop\ColourText.bas" /verbose

আপনার ডেস্কটপে কলরটেক্সটেক্স.এক্সি নামে একটি ফাইল উপস্থিত হবে। এটি উইন্ডোজ ফোল্ডারে সরান

ব্যবহারের জন্য আপনাকে রঙ নির্ধারণ করতে অবশ্যই দুটি চরিত্রের কোড ব্যবহার করতে হবে যেমন 01নয় 1

ColourText ColourOfText ColourOfTextWhenFinished Text

EG কোনও পাঠ্য পাস না করে সাদা রঙের উপর নীল সেট করতে, তারপরে ধূসর নীল দিয়ে শেষ করে সাদা পাঠ্যে লাল।

ColourText F1 F1
ColourText F2 71 This is green on white

অথবা

ColourText F1 F1
cls
ColourText F4 F4
Echo Hello
Echo Hello today
ColourText F1 F1

এছাড়াও CLSকমান্ড আকর্ষণীয় হয়ে ওঠে। Colorপরামিতি ব্যতীত কমান্ড সমস্ত রঙ সূচনার রঙে পুনরায় সেট করে।

রঙ কোড পেতে নিম্নলিখিত নম্বরগুলি একসাথে যুক্ত করুন। প্রোগ্রামার মোডে ক্যালকুলেটর ব্যবহার করুন। এগুলি হেক্স নম্বর। এগুলি একসাথে যুক্ত করা যেতে পারে যেমন লাল + নীল + এফজি ইনটেনসিটি = 13 = ডি হিসাবে 10+ ব্যবহার করা হয়নি তাই পটভূমিটি কালো হবে। রঙের কোড দুটি অক্ষর হতে হবে, যেমন 08না 8

FOREGROUND_RED = &H4     '  text color contains red.
FOREGROUND_INTENSITY = &H8     '  text color is intensified.
FOREGROUND_GREEN = &H2     '  text color contains green.
FOREGROUND_BLUE = &H1     '  text color contains blue.
BACKGROUND_BLUE = &H10    '  background color contains blue.
BACKGROUND_GREEN = &H20    '  background color contains green.
BACKGROUND_INTENSITY = &H80    '  background color is intensified.
BACKGROUND_RED = &H40    '  background color contains red.

2
আকর্ষণীয় হলেও, সবাই এসডিকে ইনস্টল করবেন না, আসলে খুব কম লোকই আমার মনে হয়।
আবেল

0

উইন্ডোজ 10 এই কাজ পেতে, আপনি এই ফ্ল্যাগ সক্ষম করতে পারবেন: ENABLE_VIRTUAL_TERMINAL_PROCESSING

এই রেজিস্ট্রি কী দিয়ে আপনি এটি ডিফল্টরূপে সেট করতে পারেন

[HKCU\Console] VirtualTerminalLevel dword 0x1


0

একটি বিকল্প হ'ল নোডজেএস ব্যবহার করা ।

এখানে একটি উদাহরণ:

const os = require('os');
const colors = require('colors');

console.log("Operative System:".green,os.type(),os.release());
console.log("Uptime:".blue,os.uptime());

এবং এই ফলাফল:

এখানে চিত্র বর্ণনা লিখুন


0

গ্লেন স্লেডেন যেমন এই উত্তরে বলেছিলেন , আপনি সেন্টিমিডিকে "আরও রঙিন" করার জন্য রেজিস্ট্রিতে যথাযথ মান যুক্ত করতে পারেন।

ভাগ্যক্রমে, গ্লোবাল ডিফল্টটিকে অপ্ট-ইন থেকে অপ্ট-আউট থেকে পরিবর্তন করা যেতে পারে। HKEY_CURRENT_USER \ কনসোল \ ভার্চুয়াল টার্মিনাল লেভেলের রেজিস্ট্রি কী এএনএসআই পলায়ন ক্রমগুলি প্রক্রিয়াজাতকরণের জন্য বিশ্বব্যাপী ডিফল্ট আচরণ সেট করে behavior একটি ডিডাবর্ড কী (যদি প্রয়োজন হয়) তৈরি করুন এবং এর মানটি বিশ্বব্যাপী সক্ষম করতে 1 তে সেট করুন (বা অক্ষম করতে 0 টি করতে হবে) ডিফল্টরূপে এএনএসআই প্রসেসিং।


0

পাওয়ারশেলে লগ স্টেটমেন্টগুলিতে রঙ নির্ধারণ করা কোনও বড় বিষয় বন্ধু নয়। আপনি -ForegroundColorপরামিতি ব্যবহার করতে পারেন ।

একটি নিশ্চিতকরণ বার্তা লিখতে।

Write-Host "Process executed Successfully...." -ForegroundColor Magenta

একটি ত্রুটি বার্তা লিখতে।

Write-Host "Sorry an unexpected error occurred.." -ForegroundColor Red

একটি অগ্রগতি বার্তা লিখতে

Write-Host "Working under pocess..." -ForegroundColor Green

0
call :color_echo "blue" "blue txt"
call :color_echo "red" "red txt"
echo "white txt"


REM : https://www.robvanderwoude.com/ansi.php
:color_echo
    @echo off

    set "color=%~1"
    set "txt=%~2"

    set ESC=
    set black=%ESC%[30m
    set red=%ESC%[31m
    set green=%ESC%[32m
    set yellow=%ESC%[33m
    set blue=%ESC%[34m
    set magenta=%ESC%[35m
    set cyan=%ESC%[36m
    set white=%ESC%[37m

    if "%~1" == "black"   set "color=!black!"
    if "%~1" == "red"     set "color=!red!"
    if "%~1" == "green"   set "color=!green!"
    if "%~1" == "yellow"  set "color=!yellow!"
    if "%~1" == "blue"    set "color=!blue!"
    if "%~1" == "magenta" set "color=!magenta!"
    if "%~1" == "cyan"    set "color=!cyan!"
    if "%~1" == "white"   set "color=!white!"

    echo | set /p="!color!!txt!"
    echo.

    REM : return to standard white color
    echo | set /p="!white!"

    REM : exiting the function only
    EXIT /B 0

%ESC%খালি, তাই এটি কাজ করবে না। echo !white!সাদা রঙ নির্ধারণ করে। ডিফল্ট রঙগুলিতে ফিরে আসার জন্য (এর জন্য ব্যবহারকারীকরণগুলি যাই হোক না কেন): colorপরামিতি ছাড়াই কমান্ড এটি করে।
স্টিফান

-1

আমরা এএনএসআই টার্মিনাল কোড দিয়ে এটি করতাম । তারা এখনও কাজ করে কিনা তা নিশ্চিত নয় তবে আপনি তাদের চেষ্টা করে দেখতে পারেন।


1
এটি যদি এই এএনএসআই টার্মিনাল কোডগুলি কীভাবে ব্যবহার করতে হয় তা ব্যাখ্যা করা যদি এটি একটি ভাল উত্তর হতে পারে ...
ডিভর জোসিপোভিচ

1
আমি ভেবেছিলাম যে নিবন্ধটি আমি সংযুক্ত করেছি তা এটি ব্যাখ্যা করেছে। তুমি কি পড়েছ? বিটিডাব্লু: এটি বলছে যে তারা উইন 32 এ কাজ করে না।
মাইকেল জে

তির্যকভাবে। নিবন্ধটি ব্যাখ্যা করে যে এএনএসআই টার্মিনাল কোডগুলি কী, তবে কীভাবে সেমিডিএসের মধ্যে থেকে এগুলি ব্যবহার করা যায়, তাই প্রশ্নের উত্তর দেওয়ার জন্য নয়। (হ্যাঁ ... উইন 32 কনসোল সমর্থিত নয় এই বিষয়টি তাদের প্রশ্নের জন্য কিছুটা অপ্রাসঙ্গিক করে তোলে))
ফেভার জোসিপোভিচ

1
আপনি কেবল টার্মিনালে এএনএসআই কোডগুলি প্রতিধ্বনিত করবেন। উদাহরণস্বরূপ "প্রতিধ্বনি ← [6 মি" টার্মিনালের পাঠ্যের রঙ 6 (লাল) এ সেট করবে। দ্রষ্টব্য "←" হ'ল ASCII 27 (পালানো)। আপনি এটি "ALT" টিপে এবং সংখ্যার কীপ্যাডে "27" টাইপ করে টাইপ করতে পারেন। আমি কেবল এটি গুগল করেছিলাম এবং জানতে পেরেছি আপনি একই জিনিস করতে এখনও "রঙ" কমান্ডটি ব্যবহার করতে পারেন (যদিও সংখ্যার কোডগুলি পৃথক রয়েছে)। "রঙ 4" আপনাকে লাল পাঠ্য দেয়।
মাইকেল জে

-6

পুরো কনসোলের রঙ পরিবর্তন করতে আপনি রঙ কমান্ডটি ব্যবহার করতে পারেন

Color 0F

কালো এবং সাদা

Color 0A 

কালো এবং সবুজ


20
জেনে ভালো লাগল. দুর্ভাগ্যক্রমে এটি পুরো কনসোলের রঙ পরিবর্তন করে এবং প্রশ্নটি কীভাবে একটি একক লাইন (বা এর একটি অংশ) পরিবর্তন করা যায় ..
লূক

6
ওপি জানিয়েছে যে তিনি এই কমান্ডের সাথে পরিচিত এবং সমস্যাটি হ'ল এটি সম্পূর্ণ কনসোলকে পরিবর্তন করে, একটি নির্দিষ্ট লাইনকে নয়।
রেন্ডাল ফ্ল্যাগ

5
হ্যাঁ সত্যই প্রতিক্রিয়াশীল না, তবে এটি এখনও দরকারী।
কৌতূহলীমার্ক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.