批处理 cmd窗口中显示的部分字符串改变颜色

 

@echo off
set /p"=  %username%"<nul>"                提示:您的当前系统用户是"
color 0c
echo.
findstr /a:07 .* "                提示:您的当前系统用户是?"
echo.
pause>nul

@ 是屏蔽预处理回显,其实使用了 @echo off 之后就无需再用 @,当时我是不知道从哪里 copy 过来的,没去掉。

 
  1. set>"                提示:您的当前系统用户是.@" /p=    %username%<nul

这行其实就是:

 
  1. set /p=    %username%<nul>"                提示:您的当前系统用户是.@"

也就是不换行输出“退格符+三个空格+用户名”到名为“ 提示:您的当前系统用户是.@”的文件
那时候为了提高 set /p 的兼容性,喜欢把重定向输出前置,不过现在看来很可笑,既然考虑了重定向输出的兼容性,当时为什么又忘了把 <nul 也前置呢。

findstr 显示彩色文字的构思有三个精妙之处:
一是将要显示的内容作为文件名,这样 findstr 的 /a 开关就能够用上
第二处是用 ? 通配符促使 findstr 命令打印文件名,如果不使用通配符,findstr 是不会前缀文件名的
第三个妙构是将退格符不换行输出到此文本中,这样 findstr 显示文件内容的时候,退格符+空格就能够遮掉 findstr 中的冒号,如果退格符很多,还可以继续向左退格、遮掉更多字符。

 

 

@echo off
set/p=一二三<nul
call :ys 四五六 0c
echo 七八九
echo.
pause
exit
:ys
::set /p= <nul>%1
set /p= <nul>%1
findstr /a:%2 .* %1*
::del %1
exit /b

 

 

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值