[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]怎样解释批处理单行显示彩色字函数colorthestr?

今天在bathhome上看到一段单行显示彩色字的代码。。有点不太明白。。
  1. @echo off
  2. :::ColorTheStr [str1=显示字符] [str2=着色字符] [str3=显示字符]
  3. echo;
  4. call :ColorTheStr "曾经,有一份真挚的" "爱情" "放在我的面前。" 0a
  5. pause>nul
  6. :ColorTheStr
  7. set "objStr=%~2"
  8. if "%objStr%"=="" set objStr=[未定义]
  9. set /p=%~1<nul
  10. set /p="%~3  "<nul>%objStr%
  11. findstr /a:%~4 .* "%objStr%*"
  12. del /q "%objStr%"
  13. goto :eof
复制代码
不太明白set /p="%~3  "<nul>%objStr%的意思。。。%~3前面有一个退格符后面还有两个空格两个退格符。。什么意思?而且最后要>%objstr%又是为什么?

[ 本帖最后由 abcdshenji 于 2011-3-13 14:27 编辑 ]
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

顶!!!!!!!!!!!!!!11

TOP

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 编辑 ]

TOP

cmd中的彩色显示基本原理是基于findstr 命令的/a开关,格式:findstr /a:颜色值 "搜索内容" 目标文件,要想彩色显示成功,文件名部分需要含有通配符*或?,楼主可以随便建一个文本文件a.txt,里面随便放一些字符,执行findstr /a:27 .* a.txt*就可以看到效果了,注意代码中的.*表示搜索任意内容,更加要注意文件名部分中的通配符*,是不是搜索的结果是文件名部分被彩色显示了?这就是彩色显示的关键所在了,就是要彩色显示什么字符,就要建立一个以这些字符命名的文件,也就能达到彩色显示的效果了,注意文件名后面是不是有一个讨厌的冒号?这也就是退格键的妙用,用于删除这个冒号,懂了没?慢慢体会……
看得多说得多,远比不上写得多。

TOP

回复 4楼 的帖子

这些我都知道。。只是其中的一些细节没办法消化。。我不太明白set /p="%~3  "<nul>%objStr%的意思。。。%~3前面有一个退格符后面还有两个空格两个退格符。。什么意思?而且最后要>%objstr%又是为什么?
我真想哪位高手能把这句
  1. set /p="%~3  "<nul>%objStr%
复制代码
]详详细细的肢解分析一遍。。我想那样会少走几步弯路。。期待ing

TOP

回复 5楼 的帖子

set /p="%~3  "<nul>%objStr%这句的意思是将""%~3   "(不包括引号)重定向到以"%objstr%"命名的文本文件,就这段代码而言就是,将“放在我的面前。  ”重定向到文件“爱情”,如果没有%~3前面的退格符,用findstr执行的结果会是:曾经,有一份真挚的爱情:放在我的面前。(“爱情”彩色显示,因为它是文件名,并且“爱情”后面会有一个冒号),%~3前面的这个退格符就是用于删除这个冒号,至于后面的两个退格符,我觉得应该是作者弄着玩儿的,显示两个空格,然后用两个退格键删除,达到混淆读者的目的。
1

评分人数

看得多说得多,远比不上写得多。

TOP

回复 6楼 的帖子

这里用“退格键删除”不太正确啊。它所能达到的效果是—在CMD窗口中的一种欺骗。并不是真正的“删除”
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

删除的效果是通过退格键+空格或者tab达到的,退格键在我看来更像键盘上的left键+insert开关

TOP

回复 8楼 的帖子

  1. @echo off
  2. set var=123
  3. set a=%var% 
  4. >1.txt echo %a%
  5. pause>nul
复制代码
试一下吧。看看1。TXT里的内容
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

噢&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

TOP

回复 6楼 的帖子

谢谢大哥。。。解析的很明白。。高手就是不一样。。作者也真是的。。非要加两个空格再加两个退格。。搞得稀里糊涂。。以后有问题还想您请教。。谢谢

TOP

不用谢哈,咱们都是菜鸟,我也是在各位前辈的指导下慢慢知道怎么用的,细心学习嘛,咱们共同提高。

TOP

试过了~
蛮好用的~
也更了解findstr的用法~
谢谢各位的解释~
我这只菜鸟及时才能看懂这些代码啊~

TOP

返回列表