如何在批处理中执行颜色命令之前保持打印文本的颜色

时间:2016-04-04 08:54:36

标签: batch-file cmd

我想更改CMD承诺的其余文本的颜色,并在执行颜色命令之前保留打印文本的颜色。

示例:

@echo off
echo hello world
color 0A

此代码的问题在于它会将hello world文本变为绿色以及命令promt中的所有其他文本。

2 个答案:

答案 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
相关问题