此处广泛解释了“如何在Windows命令行中用不同的颜色回显”
How to echo with different colors in the Windows command line
如chersun所指出的,它在for循环内失败:
@ JensA.Koch这太棒了。但是我有一个问题在for循环中运行。只有第一个回声被正确着色,之后所有其他回声仅打印所有转义字符,而不更改任何内容。批处理文件是将每个文件夹存档到单独的存档,尝试以粗体输出文件夹名称,然后是带有findstr过滤的存档器标准输出。 – chersun 18年4月22日在21:36
我要提出一个新问题,因为我没有足够的声誉在上述问题中发帖。
我发现的唯一解决方案是在for命令之后(在do块内部)包括一个虚拟CMD / C Echo /作为解决方法。
还有更好的方法吗?
TIA
编辑: 感谢您的评论,批处理文件在这里
完全不显示颜色。 如果删除的问题不存在,则该问题与选择有关。 解决方案是包括“空” CMD
将Y回答执行,以查看失败的输出
@ECHO OFF
for /F %%a in ('echo prompt $E ^| cmd') do set "_esc=%%a"
set _redon=%_esc%[91m
set _greenon=%_esc%[92m
set _coloff=%_esc%[0m
SET _free=1000
SET _used=2000
ECHO %_redon%!_used!%_coloff% / %_greenon%!_free!%_coloff%
SETLOCAL EnableDelayedExpansion
FOR /L %%A IN (1,1,5) DO (
CHOICE /C YN /T 5 /D N /N /M "Press Y to process %%A"
IF "!ERRORLEVEL!"=="1" (
SET _free=1000
SET _used=2000
REM needed CMD to return proper behaviour
REM CMD /C echo/
ECHO %_redon%!_used!%_coloff% / %_greenon%!_free!%_coloff%
)
)
PAUSE
EXIT
感谢@Stephan美化代码。
答案 0 :(得分:0)
我无法复制:
编辑:由于@Aacini
,已更改为以可移植的方式创建ESC符号@echo off
cls
for /F %%a in ('echo prompt $E ^| cmd') do set "ESC=%%a"
echo ^<ESC^>[0m %ESC%[0mReset%ESC%[0m
for %%A in (
7,30,31,32,33,34,35,36,37,
40,41,42,43,44,45,46,47,
90,91,92,93,94,95,96,97,
100,101,102,103,104,105,106,107
) Do echo ^<ESC^>[%%Am %ESC%[%%AmTest%ESC%[0m