标题: [文本处理] [已解决]怎样解释批处理单行显示彩色字函数colorthestr? [打印本页]
作者: abcdshenji 时间: 2011-3-12 18:43 标题: [已解决]怎样解释批处理单行显示彩色字函数colorthestr?
今天在bathhome上看到一段单行显示彩色字的代码。。有点不太明白。。- @echo off
- :::ColorTheStr [str1=显示字符] [str2=着色字符] [str3=显示字符]
- echo;
- call :ColorTheStr "曾经,有一份真挚的" "爱情" "放在我的面前。" 0a
- pause>nul
- :ColorTheStr
- set "objStr=%~2"
- if "%objStr%"=="" set objStr=[未定义]
- set /p=%~1<nul
- set /p="%~3 "<nul>%objStr%
- findstr /a:%~4 .* "%objStr%*"
- del /q "%objStr%"
- goto :eof
复制代码
不太明白set /p="%~3 "<nul>%objStr%的意思。。。%~3前面有一个退格符后面还有两个空格两个退格符。。什么意思?而且最后要>%objstr%又是为什么?
[ 本帖最后由 abcdshenji 于 2011-3-13 14:27 编辑 ]
作者: yuexiang6688 时间: 2011-3-12 20:18
顶!!!!!!!!!!!!!!11
作者: neorobin 时间: 2011-3-12 20:37
CMD里显示彩色文字
http://bbs.bathome.net/thread-1852-1-1.html
批处理单行输出彩色字符
http://bbs.bathome.net/thread-1853-1-1.html
批处理单行显示多种颜色字符
http://bbs.bathome.net/thread-1854-1-1.html
批处理显示彩色字符的原理及其中退格符的作用
http://bbs.bathome.net/viewthread.php?tid=1331#pid11864
http://www.bathome.net/viewthread.php?tid=6711&page=1#pid43524
[ 本帖最后由 neorobin 于 2011-3-12 20:39 编辑 ]
作者: weichenxiehou 时间: 2011-3-12 22:44
cmd中的彩色显示基本原理是基于findstr 命令的/a开关,格式:findstr /a:颜色值 "搜索内容" 目标文件,要想彩色显示成功,文件名部分需要含有通配符*或?,楼主可以随便建一个文本文件a.txt,里面随便放一些字符,执行findstr /a:27 .* a.txt*就可以看到效果了,注意代码中的.*表示搜索任意内容,更加要注意文件名部分中的通配符*,是不是搜索的结果是文件名部分被彩色显示了?这就是彩色显示的关键所在了,就是要彩色显示什么字符,就要建立一个以这些字符命名的文件,也就能达到彩色显示的效果了,注意文件名后面是不是有一个讨厌的冒号?这也就是退格键的妙用,用于删除这个冒号,懂了没?慢慢体会……
作者: abcdshenji 时间: 2011-3-13 00:15 标题: 回复 4楼 的帖子
这些我都知道。。只是其中的一些细节没办法消化。。我不太明白set /p="%~3 "<nul>%objStr%的意思。。。%~3前面有一个退格符后面还有两个空格两个退格符。。什么意思?而且最后要>%objstr%又是为什么?
我真想哪位高手能把这句- set /p="%~3 "<nul>%objStr%
复制代码
]详详细细的肢解分析一遍。。我想那样会少走几步弯路。。期待ing
作者: weichenxiehou 时间: 2011-3-13 09:11 标题: 回复 5楼 的帖子
set /p="%~3 "<nul>%objStr%这句的意思是将""%~3 "(不包括引号)重定向到以"%objstr%"命名的文本文件,就这段代码而言就是,将“放在我的面前。 ”重定向到文件“爱情”,如果没有%~3前面的退格符,用findstr执行的结果会是:曾经,有一份真挚的爱情:放在我的面前。(“爱情”彩色显示,因为它是文件名,并且“爱情”后面会有一个冒号),%~3前面的这个退格符就是用于删除这个冒号,至于后面的两个退格符,我觉得应该是作者弄着玩儿的,显示两个空格,然后用两个退格键删除,达到混淆读者的目的。
作者: wc726842270 时间: 2011-3-13 10:08 标题: 回复 6楼 的帖子
这里用“退格键删除”不太正确啊。它所能达到的效果是—在CMD窗口中的一种欺骗。并不是真正的“删除”
作者: CrLf 时间: 2011-3-13 10:22
删除的效果是通过退格键+空格或者tab达到的,退格键在我看来更像键盘上的left键+insert开关
作者: wc726842270 时间: 2011-3-13 10:26 标题: 回复 8楼 的帖子
- @echo off
- set var=123
- set a=%var%
- >1.txt echo %a%
- pause>nul
复制代码
试一下吧。看看1。TXT里的内容
作者: CrLf 时间: 2011-3-13 11:05
噢
作者: abcdshenji 时间: 2011-3-13 14:18 标题: 回复 6楼 的帖子
谢谢大哥。。。解析的很明白。。高手就是不一样。。作者也真是的。。非要加两个空格再加两个退格。。搞得稀里糊涂。。以后有问题还想您请教。。谢谢
作者: weichenxiehou 时间: 2011-3-13 18:51
不用谢哈,咱们都是菜鸟,我也是在各位前辈的指导下慢慢知道怎么用的,细心学习嘛,咱们共同提高。
作者: garyng 时间: 2011-8-10 18:29
试过了~
蛮好用的~
也更了解findstr的用法~
谢谢各位的解释~
我这只菜鸟及时才能看懂这些代码啊~
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |