I have a batch script that can display two or more colors of text on the same line in the command prompt. (below)
@echo off
SETLOCAL EnableDelayedExpansion
f
EDIT: Take 3
Create the folder C:\Utilities
. Add this folder to your Path environment variable so Windows looks there for additional scripts and commands.
;C:\Utilities
, including the semi-colon. Do not remove any other text.Take the script following the :ColorText
label and save it to C:\Utilities\cecho.bat
. Put an @
in front of echo off
to prevent echo off
from appearing during the script.
CEcho.bat
@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"
)
<Nul Set /p ".=%DEL%" > "%~2"
FindStr /v /a:%1 /R "^$" "%~2" Nul
Del "%~2" > Nul 2>&1
EndLocal
Now you can use this command from any command line or script. Usage:
CEcho color "text"
Edit: In response to your comment:
You can use words for colours by inserting the following lines and replacing the FindStr
line:
Set Color=%1
If %1==blue Set Color=9
If %1==red Set Color=C
etc...
FindStr /v /a:%Color% /R "^$" "%~2" Nul
Now you can type:
CEcho red "apple"
CEcho blue "water"
CEcho A "grass"
CEcho 6 "dirt"
CEcho 26 "tree"
Note that the color word is case sensitive.
You could use the batch parameters %1, %2, ..., %n, as parameter for the color and for the content
cecho 0a "hello world!"
@echo off
call :ColorText %1 "%~2"
...
If you want to use the color names you have to convert them to the corresponding number.
cecho blue "hello"
@echo off
if "%1"=="red" set color=0c
if "%1"=="blue" set color=0b
if ...
call :ColorText %color% "%~2"