为什么在控制台窗口中没有使用ESC序列设置的文本颜色?

时间:2017-01-04 15:52:25

标签: batch-file

我试图创建一个启动一些服务的登录批处理文件,但用户知道它们正在启动。所以我认为我会使用批处理脚本。

该脚本运行正常,但我想在ASCII中使用徽标并使用颜色更多地修饰它。在我的开发PC(Windows 10 64位)上一切正常,但在用户机器(Windows 7 64位)上,颜色没有显示。

我正在使用:

{
  id: 'someId',
  name: 'someName',
  child: {
    name: 'someChildName'
  }
  ...
}

但是当我运行它时,我会显示:

  

←[93m登录

所以它没有正确对待ESC。 这个问题必须以个人电脑为基础,因为它在另一台机器上工作,但我不知道如何解决这个问题。

3 个答案:

答案 0 :(得分:1)

只有Windows 10的控制台支持ESC序列,如MSDN页面Console Virtual Terminal Sequences中所述。以前Windows版本的控制台主机不支持ANSI ESC序列。

命令 COLOR 用于定义文本颜色和背景颜色。

打开命令提示符窗口并运行color /?以获取有关此命令的帮助。

可以在Stack Overflow上找到关于如何使用 COLOR 的数百个批处理文件示例,例如搜索词[batch-file] color

答案 1 :(得分:0)

正如我所说的那样,10之前的窗口不支持转义序列。您可以尝试ANSICON

答案 2 :(得分:0)

在引导时加载的旧ANSI.SYS将解释颜色命令 例如[esc] [1; 33; 40m(其中[esc]是一个小箭头)作为前景和 DOS提示窗口中或Windows窗口外的文本背景颜色 DOS会话。 (适用于Windows 3.1x,Win 95,Win 98 1st和2nd,Win ME和 甚至可能是32位Win XP。)

但是,在引入64位系统之后,ANSI.SYS不再像以前那样工作了。 Windows 7 cmd.exe窗口中的命令“color”为ENTIRE窗口文本着色,而不是 只是你想要着色的部分。据我所知,其中一些已经缓解了 赢取10 cmd.exe,但除此之外......

可能有一种解决方案: 被Horst Schaeffer称为“CoColor”

免费软件©Horst Schaeffer - 联系方式:horst.schaeffer@gmail.com

http://www.horstmuc.de/wcon.htm

以下是他所说的:

CoColor 2.1更改控制台输出颜色下载32位(6Kb)                                         下载64位(7Kb)

CoColor会更改后续控制台输出的控制台颜色,而不是整个窗口,就像内置的COLOR命令一样。 CoColor使用与COLOR相同的颜色代码。

CoColor还接受一系列颜色代码和文本字符串(每个都带有双引号),使其成为色彩丰富的ECHO替代品。非ASCII字符的处理方式与ECHO相同。

包括Demo.CMD。

(注意:运行Demo.cmd后,您需要运行命令颜色才能返回 到屏幕的默认颜色。他没有在剧本中加入。)

使用Avast Antivirus,SuperAntiSpyware和Malwarebytes扫描文件后, 我在Win 7 Pro 64位上运行了CoColor 64位版本,它似乎运行良好。

在过去,我用很多颜色的条纹写了很多批次 文本。他们没有像“颜色”一样改变整个屏幕的颜色 cmd.exe中的命令! COMMAND.COM理解加载了ANSI.SYS的颜色命令 在CONFIG.SYS启动时。这是我见过的最接近的事情 原始功能。希望这会有所帮助。