在批处理文件中对回声进行硬编码Ansii转义序列

时间:2018-01-15 13:22:23

标签: batch-file colors escaping

我正在使用ANSII颜色(如

)打印带有彩色输出的窗口的批处理文件
echo <ESC>[1m Some bold text <ESC>[0m
echo <ESC>[1;32m Some bold green text <ESC>[0m

来自this answerthis table我知道我必须使用<ESC>的ANSII代码27字符,我可以从file the user linked复制它。

这个工作正常,但我想知道批处理中是否有任何选项使用“普通”(可读)字符“硬编码”这个序列,例如在bash on linux上

echo -e "\033[1;32m Red Bold Text \033[0m"

this page上我找到了一些如何插入转义序列的选项。而且我也读过一个可以使用的

cmd /c exit 65
echo %=exitcodeAscii%

打印A,但这似乎不适用于

cmd /c exit 27
echo %=exitcodeAscii%[31m This would be supposed to be red, right?

如何使用批处理文件中的代码生成转义序列,而不是通过按某些键组合来插入转义序列?

1 个答案:

答案 0 :(得分:2)

您可以构建自己的echo-e.bat文件echo -e equivalent in Windows?

或者改为使用批处理功能。

call :echo-e "\x1b[1;31m Red Bold Text \x1b[0m"
exit /b

:echo-e
setlocal
set "arg1=%~1"
set "arg1=%arg1:\x=0x%"
forfiles /p "%~dp0." /m "%~nx0" /c "cmd /c echo(%arg1%"
exit /b

创建单个转义字符(27),您可以使用FORFILES或PROMPT

喜欢这个样本

for /F "delims=#" %%a in ('prompt #$E# ^& for %%a in ^(1^) do rem') do set "esc=%%a"
echo %ESC%[1;31m Red Bold Text %ESC%[0m