Blog coding and discussion of coding about JavaScript, PHP, CGI, general web building etc.

Thursday, December 17, 2015

Batch Color per line

Batch Color per line


In batch, can you have different colors per line. For example if you had a batch file say "Hello" "How are you?"

Could you have "Hello" in blue and "How are you" in green?

(I know about the color command, and the way it colors both the background and the text)

Answer by NiklasJ for Batch Color per line


You can do it without any external program. Here is something that I came over a couple of days ago. Works very good.

@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"  )  echo say the name of the colors, don't read    call :ColorText 0a "blue"  call :ColorText 0C "green"  call :ColorText 0b "red"  echo(  call :ColorText 19 "yellow"  call :ColorText 2F "black"  call :ColorText 4e "white"    goto :eof    :ColorText  echo off   "%~2"  findstr /v /a:%1 /R "^$" "%~2" nul  del "%~2" > nul 2>&1  goto :eof  
Credits to jeb  His post can be found here

Answer by Aacini for Batch Color per line


The Batch file below create COLORMSG.COM file (rename it as you wish) that show a message with color this way: colormsg color "Message".

@echo off  (  echo e100  echo 0F B6 0E 80 00 E3 4F BF 81 00 B0 20 FC F3 AE 74  echo e110  echo 45 E3 43 8A 45 FF E8 43 00 80 3D 20 74 0E C0 E0  echo e120  echo 04 8A E0 8A 05 E8 34 00 0A C4 47 49 E3 28 32 E4  echo e130  echo 50 B0 22 F2 AE 75 1F E3 1D 8B F7 8B D1 F2 AE 75  echo e140  echo 01 41 2B D1 74 10 8B CA 5B B0 20 B4 09 CD 10 AC  echo e150  echo B4 0E CD 10 E2 F9 32 C0 B4 4C CD 21 3C 61 72 02  echo e160  echo 2C 20 3C 41 72 02 2C 07 2C 30 C3  echo rcx  echo 6b  echo w  echo q  ) | debug colormsg.com > nul  

After the message the cursor is not moved to new line, so several messages may be shown in the same line. To give colors in an easier way, you may use these definitions:

set Black=0&       set Gray=8  set Blue=1&        set LightBlue=9  set Green=2&       set LightGreen=A  set Aqua=3&        set LightAqua=B  set Red=4&         set LightRed=C  set Purple=5&      set LightPurple=D  set Yellow=6&      set LightYellow=E  set White=7&       set BrightWhite=F  

For example:

colormsg %Yellow% "Message in yellow  "  colormsg %Blue%%BrightWhite% "Bright white text over blue background"  

This is a larger example:

@echo off  setlocal EnableDelayedExpansion  set i=0  for %%c in (Blk Blu Grn Aqu Red Pur Yel Whi) do (      set color[!i!]=%%c      set /A i+=1  )  for /L %%j in (0,1,7) do (      set color[!i!]=L!color[%%j]:~0,-1!      set /A i+=1  )      cls  echo/  echo           BACKGROUND / FOREGROUND COMBINATIONS OF AVAILABLE SCREEN COLORS  echo/  echo/  colormsg 7 "ForeGrnd:"  for /L %%i in (0,1,15) do colormsg 7 " !color[%%i]!"  echo/  echo BackGrnd  set i=0  for /L %%b in (0,1,9) do call :ShowLine %%b  for %%b in (A B C D E F) do call :ShowLine %%b  echo/  goto :eof    :ShowLine  colormsg 7 "   !color[%i%]!   "  set /A i+=1  for /L %%f in (0,1,9) do colormsg %1%%f " %1%%f "  for %%f in (A B C D E F) do colormsg %1%%f " %1%%f "  echo/  

Hey Gareth, here is a bonus for you! The following Batch file create TEXTPOS.COM file (rename it as you wish) that move the cursor to any line and column this way: textpos line col:

@echo off  (  echo e100  echo 0F B6 0E 80 00 E3 2D BF 81 00 B0 20 FC F3 AE 74  echo e110  echo 23 E3 21 8D 75 FF E8 45 00 3C 20 75 3B 86 F2 E8  echo e120  echo 3C 00 86 F2 3C 20 74 04 3C 0D 75 2C 32 FF B4 02  echo e130  echo CD 10 EB 24 32 FF B4 03 CD 10 8A C6 8A CA E8 38  echo e140  echo 00 B2 20 B4 02 CD 21 8A C1 E8 2D 00 B2 0D B4 02  echo e150  echo CD 21 B2 0A B4 02 CD 21 32 C0 B4 4C CD 21 32 E4  echo e160  echo AC 3C 20 74 FB 3C 30 72 0D 3C 39 77 09 2C 30 D5  echo e170  echo 0A 8A E0 AC EB EF 8A F4 C3 D4 0A 05 30 30 8B D0  echo e180  echo 80 FC 30 74 08 86 D6 B4 02 CD 21 8A D6 B4 02 CD  echo e190  echo 21 C3  echo rcx  echo 92  echo w  echo q  ) | debug textpos.com > nul  

For example:

textpos 0 0  colormsg %Red% "Red message at top left corner of the screen"  textpos 10 40  colormsg %Blue%%LightYellow% "This message start in line 10 column 40"  

EDIT

I slightly modified TEXTPOS program so it display the current cursor position if it is executed with no parameters; this feature allows to store the cursor position in a variable this way: textpos > pipe.txt & set /P pos=< pipe.txt (because textpos | set /P pos= have an error and does not work).

If a color message is shown with the same value for background and foreground colors, the text will not be visible in the screen; this feature allows to enter a password. For example, this is getpassword.bat file:

@echo off  set password=  for /L %%i in (1,1,%1) do set password=!password!x  colormsg 7 "Enter password: "  textpos > pipe.txt & set /P passpos=< pipe.txt  colormsg 77 "%password%"  textpos %passpos%  set password=  for /L %%i in (1,1,%1) do (      getakey      set password=!password!!errorlevel!      colormsg 7F "*"  )  

Previous Batch file allows to read a password with the number of characters given in the parameter, for example: call getpassword 8; entered characters are changed by its ASCII code, so the password have a rudimentary encryption. For example, to check if the entered password was "Pass":

call getpassword 4  if %password% == 8097115115 goto right_password  

I provided the GETAKEY.COM program in a previous question, but here is it again:

@echo off  (  echo e100  echo B4 08 CD 21 B4 4C CD 21  echo rcx  echo 8  echo w  echo q  ) | debug getakey.com > nul  

Answer by GaryNg for Batch Color per line


You can try this just with a little bit of command:

@echo off  chcp 437>nul&&graftabl 936>nul  ren %WinDir%\System32\config.nt config.nt.bak 2>nul  <"%~f0" more +6 >%WinDir%\System32\config.nt  command /cecho [1;31mHel[32mlo [33mHow[35mare[36myou[m  pause>nul&exit  DOSONLY  dos=high, umb  device=%SystemRoot%\system32\himem.sys  DEVICE==%SystemRoot%\System32\ANSI.SYS /x  files=40  

Answer by aalleexxx5 for Batch Color per line


I made a simple batch file that combines the color changing code with code for a small timer.

The color changing code doesn't require any external files, but does however require Windows 7 or higher.

@echo off  color 04  :ii  Cls  set tock=0  set tick=30  :sec  choice  /c jp /N /t 1 /d j  cls  if %tick%==0 goto min  set /a tick=%tick% - 1  echo.  echo ------------------------------------------------------------------------  echo                  look at this nice layout!  echo ------------------------------------------------------------------------  echo how are you doing today?  echo i used quite a while making a timer and coloring the output  echo here is the nice result  echo it is easy to add more text to this if you want to  call :PrintBright %tock%:%tick%  :min  if %tock%==0 goto exec  set tick=60  set /a tock=%tock% - 1  goto sec  :exec  cls  echo this can be any command, i use a lot of difrent ones  pause  exit    :PrintBright  powershell -Command Write-Host "%*" -foreground "Blue"  goto sec  

Answer by Johannes Clavius the Rock for Batch Color per line


@echo off    REM You can do it easely by typing this at the bottom of your file.    :[any color]  powershell -Command Write-Host "%*" -foreground "[any color]" -background "[any color]"    :[any color]  powershell -Command Write-Host "%*" -foreground "[any color]" -background "[any color]"    REM for typing text in different colors you just need to write this    call :[any color] "[any message]"  call :[any color] "[any other message]"  pause    REM if you want to know more, send a mail to maupie42 at gmail dot com    exit  

Answer by Olegs Jeremejevs for Batch Color per line


Yes, it is possible with cmdcolor:

echo \033[94mHello  echo \033[92mHow are you  

Answer by npocmaka for Batch Color per line


Save this code as .bat (it is self-compiled .net hybrid):

@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;  

Answer by tarknianc for Batch Color per line


Save it as colormsg.bat

@echo off  if "%~3" == "" goto usage  powershell -command write-host -foreground "%~1" -background "%~2" -nonewline "%~3"  exit /b  :usage  echo.  echo Usage: call colormsg foreground background "message"  echo.  echo Examples:  echo call colormsg white blue "example1"  echo call colormsg 4 2 "example2"  

Example:

@echo off  for /f %%a in ('"prompt $H & for %%a in (-) do rem"') do set "BS=%%a"  call colormsg blue 0 "Hello"  

Answer by Gohan for Batch Color per line


Just need of COLORMSG :

@echo off  (  echo e100  echo 0F B6 0E 80 00 E3 4F BF 81 00 B0 20 FC F3 AE 74  echo e110  echo 45 E3 43 8A 45 FF E8 43 00 80 3D 20 74 0E C0 E0  echo e120  echo 04 8A E0 8A 05 E8 34 00 0A C4 47 49 E3 28 32 E4  echo e130  echo 50 B0 22 F2 AE 75 1F E3 1D 8B F7 8B D1 F2 AE 75  echo e140  echo 01 41 2B D1 74 10 8B CA 5B B0 20 B4 09 CD 10 AC  echo e150  echo B4 0E CD 10 E2 F9 32 C0 B4 4C CD 21 3C 61 72 02  echo e160  echo 2C 20 3C 41 72 02 2C 07 2C 30 C3  echo rcx  echo 6b  echo w  echo q  ) | debug colormsg.com > nul  ren colormsg.com colormsg.exe  

Use the colors cmd default :

color /?  

Use echo. to break line

Use spacebar to move msg horizontally

Example:

@echo off    REM one color in line  echo.  colormsg a "green color"    REM break line  echo.    REM two colors in line  colormsg b "color blue"  colormsg c "color red"    REM break line  echo.    REM two colors with spacing horizontally (no use tab)  colormsg d "purple color"  colormsg e "             yellow color"  echo.  echo.  pause  

that's all !!


Fatal error: Call to a member function getElementsByTagName() on a non-object in D:\XAMPP INSTALLASTION\xampp\htdocs\endunpratama9i\www-stackoverflow-info-proses.php on line 71

0 comments:

Post a Comment

Popular Posts

Powered by Blogger.