如何在 Windows 命令提示符中将多种颜色应用于 "Lines"?

How can I apply multiple colors to "Lines" in Windows Command Prompt?

我是这个网站的新手,我想问你如何在CMD中按行(或按列?)应用多种颜色。随意编辑下面的代码,我也希望单词的颜色与经典 Google Chrome 颜色相似。

cls
@echo off
color 0a
echo.
echo.
echo.
echo                                                                                                      ,,
echo                                                         .g8"""bgd                                  `7MM
echo                                                        .dP'    `M                                    MM
echo                                                        dm'      `    ,pW"Wq.    ,pW"Wq.    .P"Ybmmm  MM   .gP"Ya
echo                                                        MM           6W'   `Wb  6W'   `Wb  :MI  I8    MM  ,M'   Yb
echo                                                        MM.   `7MMF' 8M     MB  8M     MB   Wmmmp"    MM  8M""""""
echo                                                        `Mb     MM   YA.   ,A9  YA.   ,A9  8M         MM  YM.    .
echo                                                         `"bmmmdPY    `Ybmd9'    `Ybmd9'    YMMMMMb .JMML. `Mbmmd'
echo                                                                                           6'    dP
echo                                                                                            Ybmmmd'
echo.
echo.
echo.
pause>nul

这是一种方法,不过您必须自己弄清楚颜色参考,我只是添加了这些颜色作为示例:

@echo off
for /F %%a in ('echo prompt $E ^| cmd') do set "ESC=%%a"
cls
echo(
echo(
echo(
echo                                                                                             %ESC%[90m,,%ESC%[0m
echo                                                %ESC%[91m.g8"""bgd%ESC%[0m                                  %ESC%[90m`7MM%ESC%[0m
echo                                                %ESC%[91m.dP'    `M%ESC%[0m                                    %ESC%[90mMM%ESC%[0m
echo                                                %ESC%[91mdm'      `%ESC%[0m    %ESC%[92m,pW"Wq.    ,pW"Wq.%ESC%[0m    %ESC%[90m.P"Ybmmm  MM   .gP"Ya%ESC%[0m
echo                                                %ESC%[91mMM%ESC%[0m           %ESC%[92m6W'   `Wb  6W'   `Wb%ESC%[0m  %ESC%[90m:MI  I8    MM  ,M'   Yb%ESC%[0m
echo                                                %ESC%[91mMM.   `7MMF'%ESC%[0m %ESC%[92m8M     MB  8M     MB%ESC%[0m   %ESC%[90mWmmmp"    MM  8M""""""%ESC%[0m
echo                                                %ESC%[91m`Mb     MM%ESC%[0m   %ESC%[92mYA.   ,A9  YA.   ,A9%ESC%[0m  %ESC%[90m8M         MM  YM.    .%ESC%[0m
echo                                                %ESC%[91m`"bmmmdPY%ESC%[0m    %ESC%[92m`Ybmd9'    `Ybmd9'%ESC%[0m    %ESC%[90mYMMMMMb .JMML. `Mbmmd'%ESC%[0m
echo                                                                                   %ESC%[90m6'    dP%ESC%[0m
echo                                                                                    %ESC%[90mYbmmmd'%ESC%[0m
echo(
echo(
echo(
pause>nul

结果:

编辑

这里是对 ansi color 转义码的引用。

这是 Gerhard 已经推荐的 ANSI 转义码方法的一个看起来更整洁的版本。

@Echo Off
SetLocal EnableExtensions
For /F %%G In ('Echo Prompt $E ^| "%__AppDir__%cmd.exe"') Do Set "ESC=%%G"
ClS
Echo=
Echo=
Echo=
Echo                             %ESC%[92m                                                ,,
Echo                             %ESC%[94m  .g8"""bgd  %ESC%[92m                                 `7MM
Echo                             %ESC%[94m .dP'    `M  %ESC%[92m                                   MM
Echo                             %ESC%[94m dm'      `  %ESC%[91m  ,pW"Wq.  %ESC%[93m  ,pW"Wq. %ESC%[94m  .P"Ybmmm %ESC%[92m   MM  %ESC%[91m  .gP"Ya
Echo                             %ESC%[94m MM          %ESC%[91m 6W'   `Wb %ESC%[93m 6W'   `Wb%ESC%[94m :MI  I8   %ESC%[92m   MM  %ESC%[91m ,M'   Yb
Echo                             %ESC%[94m MM.   `7MMF'%ESC%[91m 8M     MB %ESC%[93m 8M     MB%ESC%[94m  Wmmmp"   %ESC%[92m   MM  %ESC%[91m 8M""""""
Echo                             %ESC%[94m `Mb     MM  %ESC%[91m YA.   ,A9 %ESC%[93m YA.   ,A9%ESC%[94m 8M        %ESC%[92m   MM  %ESC%[91m YM.    .
Echo                             %ESC%[94m  `"bmmmdPY  %ESC%[91m  `Ybmd9'  %ESC%[93m  `Ybmd9' %ESC%[94m  YMMMMMb  %ESC%[92m .JMML.%ESC%[91m  `Mbmmd'
Echo                             %ESC%[94m                                   6'    dP
Echo                                                                 Ybmmmd' %ESC%[0m
Echo=
Echo=
Echo=
Pause 1> NUL

你甚至可以把它弄乱,把它放进一个明亮的白色盒子里,例如:

@Echo Off
SetLocal EnableExtensions
For %%# In (BG FG)Do Set "%%#="
For /F %%# In ('%__AppDir__%WindowsPowerShell\v1.0\powershell.exe -NoP ^
    "$Console=(Get-Host).UI.RawUI;Switch($Console.BackgroundColor," ^
    "$Console.ForegroundColor){'Black'{40}'DarkBlue'{44}'DarkGreen'{42}" ^
    "'DarkCyan'{46}'DarkRed'{41}'DarkMagenta'{45}'DarkYellow'{43}'Gray'{47}" ^
    "'DarkGray'{100}'Blue'{104}'Green'{102}'Cyan'{106}'Red'{101}" ^
    "'Magenta'{105}'Yellow'{103}'White'{107}}" 2^>NUL')Do If Not Defined BG (
    Set "BG=%%#")Else Set "FG=%%#"
For /F %%G In ('Echo Prompt $E ^| "%__AppDir__%cmd.exe"') Do Set "ESC=%%G"
ClS
Echo=
Echo=
Echo=
Echo                             %ESC%[92;107m                                                ,,            %ESC%[%FG%;%BG%m
Echo                             %ESC%[94;107m  .g8"""bgd  %ESC%[92m                                 `7MM            %ESC%[%FG%;%BG%m
Echo                             %ESC%[94;107m .dP'    `M  %ESC%[92m                                   MM            %ESC%[%FG%;%BG%m
Echo                             %ESC%[94;107m dm'      `  %ESC%[91m  ,pW"Wq.  %ESC%[93m  ,pW"Wq. %ESC%[94m  .P"Ybmmm %ESC%[92m   MM  %ESC%[91m  .gP"Ya  %ESC%[%FG%;%BG%m
Echo                             %ESC%[94;107m MM          %ESC%[91m 6W'   `Wb %ESC%[93m 6W'   `Wb%ESC%[94m :MI  I8   %ESC%[92m   MM  %ESC%[91m ,M'   Yb %ESC%[%FG%;%BG%m
Echo                             %ESC%[94;107m MM.   `7MMF'%ESC%[91m 8M     MB %ESC%[93m 8M     MB%ESC%[94m  Wmmmp"   %ESC%[92m   MM  %ESC%[91m 8M"""""" %ESC%[%FG%;%BG%m
Echo                             %ESC%[94;107m `Mb     MM  %ESC%[91m YA.   ,A9 %ESC%[93m YA.   ,A9%ESC%[94m 8M        %ESC%[92m   MM  %ESC%[91m YM.    . %ESC%[%FG%;%BG%m
Echo                             %ESC%[94;107m  `"bmmmdPY  %ESC%[91m  `Ybmd9'  %ESC%[93m  `Ybmd9' %ESC%[94m  YMMMMMb  %ESC%[92m .JMML.%ESC%[91m  `Mbmmd' %ESC%[%FG%;%BG%m
Echo                             %ESC%[94;107m                                   6'    dP                   %ESC%[%FG%;%BG%m
Echo                             %ESC%[94;107m                                    Ybmmmd'                   %ESC%[%FG%;%BG%m
Echo=
Echo=
Echo=
Pause 1> NUL
GoTo :EOF

上述方法利用 使用当前控制台前景色和背景色来确定和创建变量。这可确保在处理完颜色更改的图像行后正确重置它们。 (编剧当然可以一开始就定义已知的颜色)

不过,我要补充一点,命令行应该用于键入命令和读取文本输出,而不是用于显示不必要的幼稚图像和颜色。如果您想要 GUI,请构建 GUI 程序,而不是控制台程序。