标题: [文本处理] [已解决]如何使cmd窗口中显示的部分字符串/指定字符串变颜色/改颜色? [打印本页]
作者: Vurtne 时间: 2011-8-28 21:59 标题: [已解决]如何使cmd窗口中显示的部分字符串/指定字符串变颜色/改颜色?
本帖最后由 pcl_test 于 2017-4-16 20:04 编辑
CrLf 在回答中所写的代码- @ECHO off
- set>" 提示:您的当前系统用户是.@" /p= %username%<nul
- color 0c
- @ECHO.
- findstr /a:07 ".*" " 提示:您的当前系统用户是.@?"
- @ECHO.
- @pause>nul
复制代码
对 .@" /p= 这些的 不是很理解 有没有详细介绍下 这些代码
作者: sxw 时间: 2011-8-28 23:41
生成了一个名为 “ 提示:您的当前系统用户是.@” 的文件,
set>" 提示:您的当前系统用户是.@" /p= %username%<nul
即(set /p= %username%<nul)>" 提示:您的当前系统用户是.@"
作者: CrLf 时间: 2011-8-28 23:49
那时候我才学没多久,依样画葫芦的...
@ 是屏蔽预处理回显,其实使用了 @echo off 之后就无需再用 @,当时我是不知道从哪里 copy 过来的,没去掉。- set>" 提示:您的当前系统用户是.@" /p= %username%<nul
复制代码
这行其实就是:- set /p= %username%<nul>" 提示:您的当前系统用户是.@"
复制代码
也就是不换行输出“退格符+三个空格+用户名”到名为“ 提示:您的当前系统用户是.@”的文件
那时候为了提高 set /p 的兼容性,喜欢把重定向输出前置,不过现在看来很可笑,既然考虑了重定向输出的兼容性,当时为什么又忘了把 <nul 也前置呢。
findstr 显示彩色文字的构思有三个精妙之处:
一是将要显示的内容作为文件名,这样 findstr 的 /a 开关就能够用上
第二处是用 ? 通配符促使 findstr 命令打印文件名,如果不使用通配符,findstr 是不会前缀文件名的
第三个妙构是将退格符不换行输出到此文本中,这样 findstr 显示文件内容的时候,退格符+空格就能够遮掉 findstr 中的冒号,如果退格符很多,还可以继续向左退格、遮掉更多字符。
按现在的习惯来写的话,就是这样:- @echo off
- set /p"= %username%"<nul>" 提示:您的当前系统用户是"
- color 0c
- echo.
- findstr /a:07 .* " 提示:您的当前系统用户是?"
- echo.
- pause>nul
复制代码
作者: Vurtne 时间: 2011-8-29 10:42
谢谢 以了解
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |