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

标签 windows cmd

控制台的文本颜色在 Windows 10 build 15063.296 中不起作用。
我深入研究了一下,发现自己迷路了。这是我找到的所有内容...

从几个讨论来看,似乎在最新版本的 Windows 10 中删除了对“虚拟终端序列”“控制字符序列” 的支持(#1#2)。有些人还建议降级 git 版本(这对我不起作用)。

我试图从我的另一台机器上复制一个 cmd.exe,版本是 10.0.10586.0 并且着色有效,但是,在进一步阅读和试验后,我我不再确定问题出在哪里。

比较 ls --color=auto
的输出 git\git-cmd.exe, git\git-bash.exe, windows 原生的cmd.exe 和旧的cmd。 exe

ls --color=auto outputs in several consoles

根据 this site , 对着色的支持不在命令窗口中,而是在 conhost.exe 中,这就提出了一个问题 -- 为什么它在某些控制台中有效而在某些控制台中无效?

If you start powershell.exe from cmd.exe, it will inherit the conhost settings since it’s attaching to a previously created console, not allocating a new one; this also enables escape sequences in powershell.exe.

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

以旧换新

从新到旧

/EDIT 我做了更多的实验...

有趣/令人困惑的是 typecat 的不同结果以及 ls --color=auto 与来自文件的相同内容 typed。

旧控制台 old console

新控制台 new console

Console Virtual Terminal Sequences msdn
ANSI.SYS historical documentation

最佳答案

至于现在,我通过用旧的 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中赋予Administrators完全权限。

关于Windows 10 控制台颜色不起作用(虚拟终端控制字符序列),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44047988/

相关文章:

windows - Windows 10 上的 Tensorflow 安装,错误 'Not a supported wheel on this platform'

vb.net - 如何从 VB.NET 运行 DOS/CMD/命令提示符命令?

windows - Mongodb Windows 安装程序 "admin web console waiting for connections on port 28017"错误

windows - 简单的多线程互斥示例是不正确的

linux - 使用 ls 从 SFTP 服务器获取文件的时间戳

windows - 在 Windows 上使用一条命令更改文件夹中所有文件的扩展名

c - 如何删除C中上面几行的书面文字?

batch-file - 如何获取当前行号?

c++ - 需要帮助通过引用类传递 Windows 事件句柄

mysql - 如何在 Windows 上直接从 freeswitch 将通话数据记录存储在 MySQL 中?