【问题标题】:How to echo with different colors in the Windows command line INSIDE A FOR LOOP WITH A CHOICE cmd如何在 Windows 命令行 INSIDE A FOR LOOP WITH A CHOICE cmd 中以不同颜色回显
【发布时间】:2019-09-17 08:48:50
【问题描述】:

虽然“如何在 Windows 命令行中使用不同颜色回显”在这里得到了广泛的解释

How to echo with different colors in the Windows command line

正如 chersun 已经指出的那样,它在 for 循环中失败:

@JensA.Koch 这太棒了。但我在 for 循环中运行时遇到问题。只有第一个回显得到正确着色,之后所有其他回显只打印所有转义字符而不是更改任何内容。批处理文件是将每个文件夹存档到单独的存档中,尝试以粗体输出文件夹名称,然后是带有 findstr 过滤的存档器标准输出。 – chersun 2018 年 4 月 22 日 21:36

我正在提出一个新问题,因为我没有足够的声誉在上述问题中发帖。

我发现的唯一解决方案是在 for 命令之后(在 do 块内)包含一个虚拟 CMD /C Echo/ 作为解决方法。

有没有更好的方法?

TIA

编辑: 感谢cmets,这里是批处理文件

出块,颜色很好。 如果删除的问题消失,则问题与 CHOICE 相关。 解决方案是包含“空”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 美化代码。

【问题讨论】:

标签: loops cmd colors


【解决方案1】:

我无法复制:

编辑:更改为以可移植方式创建 ESC 符号,感谢@Aacini

@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

【讨论】:

    猜你喜欢
    • 2011-01-04
    • 1970-01-01
    • 2014-11-16
    • 2022-12-01
    • 2017-08-04
    • 1970-01-01
    • 2022-12-27
    • 1970-01-01
    相关资源
    最近更新 更多