Windows 10控制台颜色不起作用(虚拟terminal控制字符序列)

控制台的文本颜色在Windows 10 build 15063.296
我挖了一下,发现自己迷路了。 这是我find的一切

从几个讨论中,似乎在最近版本的Windows 10( #1 , #2 )中删除了对“虚拟terminal序列”“控制字符序列”的支持。 有些人还build议降级Git版本(这不适合我)。

我试图复制一个cmd.exe从我的另一台机器,版本是10.0.10586.0和着色工作,但是,经过进一步阅读和试验,我不知道问题出在哪里。

请参阅比较ls --color=auto的输出
git\git-cmd.exegit\git-bash.exe ,windows的原始cmd.exe和较旧的cmd.exe

ls --color =自动输出在几个控制台

根据这个网站 ,对着色的支持并不在于命令窗口,而是在一个conhost.exe ,这conhost.exe了一个问题 – 为什么它在一些控制台中有效,而在某些情况下呢?

如果从cmd.exe启动powershell.exe,它将inheritanceconhost设置,因为它连接到以前创build的控制台,不会分配新的控制台; 这也使powershell.exe中的转义序列。

鉴于这句话,我尝试了以下这些只会加深我的困惑。 我在每个cmd版本中运行ls --color=auto命令,然后尝试从较新的版本运行较旧的cmd,反之亦然,得到以下结果。 ( 红色下划线是cmd v15063 ,绿色下划线是cmd v10586

旧的,新的旧的

新的,旧的新的

/编辑我做了更多的实验…

有趣/混淆的是typecat的不同结果,以及ls --color=auto与文件中内容type d相同的比较结果。

老控制台 旧的控制台

新的控制台 新的控制台

控制台虚拟terminal序列msdn
ANSI.SYS历史文档

Solutions Collecting From Web of "Windows 10控制台颜色不起作用(虚拟terminal控制字符序列)"

至于现在,我已经通过用旧的cmd_10.0.10586.0替换了较新的cmd_10.0.15063.0 “修复”它。 如果您已经运行Windows升级,您可能会在C:\Windows.old\Windows\System32\cmd.exe找到较旧的cmd版本。 (该文件夹被隐藏)

要替换系统的cmd.exe您将需要获取文件Properties -> Security -> Advanced ,在顶部Owner: TrustedInstaller (Change) ,设置为Administrators ,然后在Permissions -> Change permissions -> Administrators -> Edit -> Full control授予管理员完全Permissions -> Change permissions -> Administrators -> Edit -> Full control