批处理文件中的彩色回显

3
如何在批处理中添加颜色到echo?
我想让echo输出类似于:
echo <Colorful text here>
1个回答

6

如果要做这样的事情,调用自定义C++程序可能会更容易一些。

虽然没有必要这样做,但是确实是可行的。

有一个预先制作好的C++脚本编译成了Windows可以运行的东西,位于http://www.codeproject.com/Articles/17033/Add-Colors-to-Batch-Files

该网站解释了你需要知道的大部分内容,但我在这里提供一些帮助和示例。

你可以使用的颜色代码如下:

  • 0 = 黑色 8 = 灰色
  • 1 = 海军蓝 9 = 蓝色
  • 2 = 绿色 A = 酸橙色
  • 3 = 青色 B = 水绿色
  • 4 = 栗色 C = 红色
  • 5 = 紫色 D = 紫红色
  • 6 = 橄榄色 E = 黄色
  • 7 = 银色 F = 白色

我猜你想做的是给文本上色,将颜色恢复为正常并换行。要做到这一点,你需要使用以下代码...

cecho {0C}Hello world!{#}{\n}

运行以上代码,"Hello world!" 将以红色字体显示。
第一个数字是背景颜色,第二个数字是前景色(实际文本颜色)。
另一个例子是黑底黄字:
cecho {0E}Yellow is a nice color.{#}{\n}

编辑:

如果您想要给所有内容上色,请使用Windows自带的color命令。

color 0c

(黑底绿字)

编辑:

如果你想要使用批处理(不使用其他资源)来给单行文字上色,可以尝试以下示例:

echo off
SETLOCAL EnableDelayedExpansion
for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do rem"') do (
  set "DEL=%%a"
)
echo say the name of the colors, don't read

call :ColorText 0a "blue"
call :ColorText 0C "green"
call :ColorText 0b "red"
echo(
call :ColorText 19 "yellow"
call :ColorText 2F "black"
call :ColorText 4e "white"

goto :eof

:ColorText
echo off
<nul set /p ".=%DEL%" > "%~2"
findstr /v /a:%1 /R "^$" "%~2" nul
del "%~2" > nul 2>&1
goto :eof

感谢Tutankhamen的分享。
以下是原始回答(来自Tutankhamen):https://dev59.com/U3I-5IYBdhLWcg3wBjnk#23072489

OP想知道如何在批处理文件中实现这一点,而不是使用第三方工具的替代方法。答案是“你不能”。 - John Stock

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接