我正在为使用 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