如何在Windows批处理中为For /f命令的输出添加红色显示?
如何在Windows批处理中为For /f命令的输出添加红色显示?
嘿,我来帮你搞定这个批处理输出变红的问题!你之前尝试的几种方法都有小细节没处理对,我一步步给你梳理修正方案:
一、先搞懂最初的ESC序列为啥失效
你最开始写的这段代码:
for /f %%i in ('getmac^|find "-"') do @echo %ESC%[91m%%i%ESC%[0m && set result=%%i
问题出在两个地方:
- 没有启用延迟扩展:批处理里的
%变量%会在脚本执行前就被解析,循环里的%%i和%ESC%没法正确联动; - ESC字符定义不规范:直接用
%ESC%如果没提前正确定义这个变量,系统根本识别不了。
修正后的ESC序列方法
先正确定义ESC字符,再启用延迟扩展,就能直接输出红色文本了:
@echo off setlocal enabledelayedexpansion :: 正确定义ESC字符(通过prompt命令生成) for /f %%a in ('echo prompt $E ^| cmd') do set "ESC=%%a" :: 循环输出红色MAC地址 for /f %%i in ('getmac^|find "-"') do ( echo !ESC
