从cygwin调用cmd / c时如何显示一行的彩色输出

时间:2018-06-04 06:35:31

标签: bash batch-file cmd cmake cygwin

我想仅为部分线显示彩色输出 下面是在cygwin上运行时运行正常的代码:
echo -e '\e[0;31m' "Something failed"'\e[0m'
它以红色正确显示输出。


现在我想调用windows cmd提示符并生成相同的输出。
我想用" cmd / c"做同样的事情。选项。但它不起作用。
下面是我试图实现的代码,因为我正在调用cygwin。

cmd /c echo -e '\e[0;31m' "Something failed"'\e[0m'
它不会产生彩色输出。我也试过使用bin / echo但它仍然无法显示红色输出。

有没有什么方法可以通过从cygwin调用cmd / c来实现红色输出?

1 个答案:

答案 0 :(得分:0)

是的,有些方法,但您的代码无法正常工作,因为echo -e ..将使用cmd.exe执行,而且echo版本的Windows不支持-e

您可以为此构建自己的echo-e函数或批处理文件。

来自echo -e equivalent in Windows?

echo-e.bat

@echo off
set "arg1=%~1"
set "arg1=%arg1:\x=0x%"
set "arg1=%arg1:\e=0x1B%"
forfiles /p "%~dp0." /m "%~nx0" /c "cmd /c echo(%arg1%"

然后你可以像

一样使用它
cmd /c echo-e "\e[0;31m Something failed\e[0m"

注意:
这只适用于从薄薄的窗口开始的情况 当您的代码在cmd窗口中运行时,启动一个cygwin脚本,启动cmd /c echo-e ...它只能在win10中使用vt100支持