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

如何在CMD同一行中修改单个文字的颜色

在CMD中实现文本局部变色的批处理方案

如果需要在CMD命令行环境里给一段文本中的部分内容单独设置颜色,下面的批处理代码可以实现这个需求:

@echo off
SETLOCAL EnableDelayedExpansion
for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do rem"') do (
  set "DEL=%%a"
)

color 0a
title App
cls

:welcome_page
cls
echo Welcome to App 
call :colorEcho 0C "Menu in red" & call :colorEcho 0B "and this text in a different color" & call :colorEcho 0C "back to red"
echo.
pause
exit

:colorEcho
echo off
<nul set /p ".=%DEL%" > "%~2"
findstr /v /a:%1 /R "^$" "%~2" nul
del "%~2" > nul 2>&1

代码说明

  • 核心原理:CMD本身不支持直接输出分段变色的文本,这里通过for /F命令捕获退格符和ANSI转义序列存入DEL变量,再借助findstr的/a参数(指定输出颜色)结合临时文件来实现局部着色。
  • 颜色代码规则:/a:后面的两位十六进制数,第一位是背景色(0=黑,1=蓝,2=绿等),第二位是前景色(C=红,B=浅蓝,A=浅绿等),比如0C就是黑底红字。
  • 自定义子过程:colorEcho:接受两个参数,第一个是颜色代码,第二个是要着色的文本。它会先将退格符写入临时文件,再用指定颜色输出文本,最后清理临时文件。
  • 连续调用注意:原代码里的call :colorEcho ... :colorEcho ...写法有误,应该用&连接多个call命令,否则第二个及之后的:colorEcho会被当成第一个call的参数,导致执行失败。

修正点说明

原代码存在两处小问题:

  1. 连续调用:colorEcho时的语法错误,需用&分隔多个call命令;
  2. 最后一行的del "%~2" > nul 2>&1i多了个i,修正为del "%~2" > nul 2>&1避免报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 16:58:16