You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过ANSI转义码在Batch中展示所有颜色并快速切换

Batch脚本实现全RGB颜色快速切换

你的原脚本只遍历了单通道递增的有限颜色(红→绿→蓝依次拉满),所以只能看到黑→红→黄→白的有限过渡,而且每秒切换速度较慢。以下是修改方案:

核心问题分析

  1. 颜色遍历逻辑缺陷:原脚本先把红通道(col1)从0加到255,再处理绿通道(col2),最后蓝通道(col3),仅覆盖了单通道渐变的情况,没有遍历所有RGB组合(共256×256×256=16777216种)。
  2. 更新速度受限: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![38;2;!col1!;!col2!;!col3!m█▓▒▒░░░Text Editor░░░▒▒▓█
    
    REM 快速延迟(100ms,可调整-w参数值,单位毫秒)
    ping -n 1 -w 100 127.0.0.1 > nul
    
    REM 按Ctrl+C可终止循环
)

ENDLOCAL

关键修改说明

  • 正确获取ESC字符:通过for /f从cmd的prompt变量中提取转义字符,避免直接输入的兼容性问题。
  • 全RGB遍历:将0到16777215的数值拆分为R(高8位)、G(中8位)、B(低8位),覆盖所有24位颜色组合。
  • 快速刷新:用ping -n 1 -w 100实现100ms间隔的快速切换,可根据需求调整-w后的数值(比如50就是50ms);cls清屏避免多行堆积。
  • 终止方式:运行时按Ctrl+C即可停止循环,无需等待所有颜色遍历完成。

内容的提问来源于stack exchange,提问作者Kyle Chong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 01:45:29