我想更改CMD承诺的其余文本的颜色,并在执行颜色命令之前保留打印文本的颜色。
示例:
@echo off
echo hello world
color 0A
此代码的问题在于它会将hello world文本变为绿色以及命令promt中的所有其他文本。
答案 0 :(得分:0)
这段代码可以解决问题:
当您拨打以下内容时:Call :Color 0B "Hello world !" 0
等于0
的第二个参数意味着你保持同一行
如果你选择第二个等于1
的参数,就像这个:
Call :Color 0e "Not in same line !" 1
@echo off
Title Example with multicolors
Call :Color 0A "Hello world !" 0
Call :Color 0D "Hello world in the same line !" 0
echo(
Call :Color 0C "Hello world !" 1
Call :Color 0E "Not in same line !" 1
Pause
::***********************************
:Color
for /F "delims=." %%a in ('"prompt $H. & for %%b in (1) do rem"') do set "BS=%%a"
set nL=%3
if not defined nL echo Requires third argument & Pause > nul & goto :Eof
if %3 == 0 (
<nul set /p ".=%BS%">%2 & Findstr /V /A:%1 /R "^$" %2 nul & Del %2 2>&1
goto :Eof
) else if %3 == 1 (
echo %BS%>%2 & Findstr /V /A:%1 /R "^$" %2 nul & Del %2 2>&1
goto :Eof
)
::***********************************
答案 1 :(得分:0)
您可以&#34;更改CMD&#34; 所提出的其余文本的颜色(即不与&#34;相同在PowerShell的帮助下,给定颜色的文本&#34;),但方法很慢......
@echo off
echo Standard color
call :SetColor Yellow/Blue
set /P "=Hello" < NUL
call :SetColor Magenta/DarkGreen
echo World!
goto :EOF
:SetColor fore/back
for /F "tokens=1,2 delims=/" %%a in ("%~1") do (
PowerShell $host.UI.RawUI.BackgroundColor = '%%b'; $host.UI.RawUI.ForegroundColor = '%%a'
)
exit /B
通过此方法设置的颜色用于cmd.exe窗口中显示的所有后缀文本!
可用的颜色名称:
Black DarkGray
DarkBlue Blue
DarkGreen Green
DarkCyan Cyan
DarkRed Red
DarkMagenta Magenta
DarkYellow Yellow
Gray White