找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 27320|回复: 3

[文本处理] [已解决]如何使cmd窗口中显示的部分字符串/指定字符串变颜色/改颜色?

[复制链接]
发表于 2011-8-28 21:59:32 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2017-4-16 20:04 编辑

CrLf 在回答中所写的代码

  1. @ECHO off
  2. set>"                提示:您的当前系统用户是.@" /p=    %username%<nul
  3. color 0c
  4. @ECHO.
  5. findstr /a:07 ".*" "                提示:您的当前系统用户是.@?"
  6. @ECHO.
  7. @pause>nul
复制代码
对 .@" /p=    这些的 不是很理解 有没有详细介绍下 这些代码

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2011-8-28 23:41:05 | 显示全部楼层
生成了一个名为  “                提示:您的当前系统用户是.@” 的文件,
set>"                提示:您的当前系统用户是.@" /p=    %username%<nul

即(set  /p=    %username%<nul)>"                提示:您的当前系统用户是.@"
发表于 2011-8-28 23:49:52 | 显示全部楼层
那时候我才学没多久,依样画葫芦的...

@ 是屏蔽预处理回显,其实使用了 @echo off 之后就无需再用 @,当时我是不知道从哪里 copy 过来的,没去掉。
  1. set>"                提示:您的当前系统用户是.@" /p=    %username%<nul
复制代码
这行其实就是:
  1. set /p=    %username%<nul>"                提示:您的当前系统用户是.@"
复制代码
也就是不换行输出“退格符+三个空格+用户名”到名为“ 提示:您的当前系统用户是.@”的文件
那时候为了提高 set /p 的兼容性,喜欢把重定向输出前置,不过现在看来很可笑,既然考虑了重定向输出的兼容性,当时为什么又忘了把 <nul 也前置呢。

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

按现在的习惯来写的话,就是这样:
  1. @echo off
  2. set /p"=  %username%"<nul>"                提示:您的当前系统用户是"
  3. color 0c
  4. echo.
  5. findstr /a:07 .* "                提示:您的当前系统用户是?"
  6. echo.
  7. pause>nul
复制代码

评分

参与人数 2技术 +2 收起 理由
Hello123World + 1 果然是findstr吗
raymai97 + 1 不错,一直没看懂,现在懂了

查看全部评分

 楼主| 发表于 2011-8-29 10:42:26 | 显示全部楼层
谢谢 以了解
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 07:25 , Processed in 0.019337 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表