如何在Windows命令行中使用不同的颜色进行回声

时间:2019-04-28 14:35:47

标签: loops cmd colors

此处广泛解释了“如何在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美化代码。

1 个答案:

答案 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

enter image description here