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



我正在为使用 ANSII 颜色的彩色输出窗口编写批处理文件,例如

echo <ESC>[1m Some bold text <ESC>[0m
echo <ESC>[1;32m Some bold green text <ESC>[0m

从这个答案和这个表中,我知道我必须使用 ANSII 代码 27 字符进行<ESC>,我可以从用户链接的文件中复制它。

这工作正常,但我想知道是否有任何选项可以使用"普通"(可读(字符"硬编码"此序列,例如在 linux 上的 bash 中

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

在此页面上,我找到了一些如何插入转义序列的选项。我还读过一个可以使用

cmd /c exit 65
echo %=exitcodeAscii%

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

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

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

您可以在Windows中构建自己的echo-e.bat文件echo -e等效文件。

或者改用批处理函数。

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

最新更新