在批处理脚本中,我们可以使用更多的颜色?

分享于 

4分钟阅读

电脑

  繁體 雙語

问题:

我们已经有 16种颜色:


0 = Black 8 = Gray


1 = Blue 9 = Light Blue


2 = Green A = Light Green


3 = Aqua B = Light Aqua


4 = Red C = Light Red


5 = Purple D = Light Purple


6 = Yellow E = Light Yellow


7 = White F = Bright White



但是我想在批处理文件中使用更多颜色

任何帮助?


回答 1:

我可以在 Windows 批处理文件中使用更多的16颜色?

不,因为大多数 Windows 应用只支持 16种颜色。

然而,在 Windows 10内部内部构建 #14931 中,Windows 控制台被更新为支持 24-bit RGB true 颜色。

不幸的是就像上面提到的大多数 Windows 应用程序都不能使用这个增强( 但是) 。

但是,使用 Windows 子系统为 Linux ( WSL ),Linux脚本和工具可以使用新的控制台 24-bit 颜色支持:

我们收到的最频繁的请求之一是增加 Windows 控制台可以支持的颜色数量。 我们爱的只是传递你要求的特性 !

但不仅仅是添加几种颜色,或者将控制台限制为只有 256种颜色,在 Windows 10内部构建 #14931, 。

我们已经更新 Windows 控制台以支持完整的,华丽的24-bit true 颜色 !

demo,大多数 Windows 应用只支持 16色,而Linux世界现在支持 256色终端,而且 24-bit 颜色已经变得更 established 。

由于我们在Linux平台上使用我们的新Bash在 Windows 环境上的上运行Linux应用程序和脚本,我们可以使用一些Linux脚本和工具来演示控制台 24-bit 颜色支持:

enter image description here

enter image description here

目前,我们还没有开始改进控制台属性页面以支持新控制台颜色呈现功能,并且我们还没有修改默认的Windows 颜色映射,我们将在后续版本中进行改进,并在许多其他功能中进行改进。

Windows 控制台中的源 24-bit 颜色 ! 面向开发人员的| Windows 命令行 工具


回答 2:

通过创建名为 VirtualTerminalLevel的DWORD,在 Windows 10 conhost.exe 中支持ANSI序列支持,并将其值设置为 1

如果在bash中支持 24-bit 颜色,那么你还可以在任何或者PowerShell会话中使用 24-bit 色。 下面是一个cmd示例


echo [38;2;40;177;249m color: 40;177;249 [0m


echo [38;2;255;255;100m color: 255;255;100


echo [48;2;200;0;200m color: 200;0;200 [0m



cmd 24-bit color

我不知道转义字符是否可以在发布后存在,但是你可以复制以上内容,如有必要则复制它。 在不解析原始 0 x1B转义字符的方法中,将转义字符嵌入为 [char]0x1B 更容易。


echo"$([char]0x1B)[38;2;40;177;249m color: 40;177;249 $([char]0x1B)[0m"


echo"$([char]0x1B)[38;2;255;255;100m color: 255;255;100"


echo"$([char]0x1B)[48;2;200;0;200m color: 200;0;200 $([char]0x1B)[0m"



powershell 24-bit color

有关如何使 WIN32 控制台识别 ansi/vt100转义序列的信息,请参阅



COL  color  CAN  bat  颜色  batch  
相关文章