如何通过ANSI转义码在Batch中展示所有颜色并快速切换
Batch脚本实现全RGB颜色快速切换
你的原脚本只遍历了单通道递增的有限颜色(红→绿→蓝依次拉满),所以只能看到黑→红→黄→白的有限过渡,而且每秒切换速度较慢。以下是修改方案:
核心问题分析
- 颜色遍历逻辑缺陷:原脚本先把红通道(col1)从0加到255,再处理绿通道(col2),最后蓝通道(col3),仅覆盖了单通道渐变的情况,没有遍历所有RGB组合(共256×256×256=16777216种)。
- 更新速度受限:
timeout /t 1强制每秒切换一次,无法实现快速刷新。
修改后的完整脚本
@ECHO OFF SETLOCAL ENABLEDELAYEDEXPANSION chcp 65001 > nul REM 获取ANSI转义字符ESC for /f %%a in ('echo prompt $E ^| cmd') do set "ESC=%%a" REM 遍历所有RGB颜色组合(0到16777215对应所有24位色) for /L %%i in (0,1,16777215) do ( REM 将数值拆分为R、G、B分量 set /a "num=%%i" set /a "col3=num %% 256" set /a "num=num / 256" set /a "col2=num %% 256" set /a "col1=num / 256" REM 清屏并输出当前颜色的文本(避免刷屏) cls echo !ESC
