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

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

[复制链接]
发表于 2011-3-12 18:43:23 | 显示全部楼层 |阅读模式
今天在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 编辑 ]

评分

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

查看全部评分

发表于 2011-3-12 20:18:58 | 显示全部楼层
顶!!!!!!!!!!!!!!11
发表于 2011-3-12 20:37:28 | 显示全部楼层
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 编辑 ]
发表于 2011-3-12 22:44:11 | 显示全部楼层
cmd中的彩色显示基本原理是基于findstr 命令的/a开关,格式:findstr /a:颜色值 "搜索内容" 目标文件,要想彩色显示成功,文件名部分需要含有通配符*或?,楼主可以随便建一个文本文件a.txt,里面随便放一些字符,执行findstr /a:27 .* a.txt*就可以看到效果了,注意代码中的.*表示搜索任意内容,更加要注意文件名部分中的通配符*,是不是搜索的结果是文件名部分被彩色显示了?这就是彩色显示的关键所在了,就是要彩色显示什么字符,就要建立一个以这些字符命名的文件,也就能达到彩色显示的效果了,注意文件名后面是不是有一个讨厌的冒号?这也就是退格键的妙用,用于删除这个冒号,懂了没?慢慢体会……
 楼主| 发表于 2011-3-13 00:15:52 | 显示全部楼层

回复 4楼 的帖子

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

回复 5楼 的帖子

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

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

发表于 2011-3-13 10:08:18 | 显示全部楼层

回复 6楼 的帖子

这里用“退格键删除”不太正确啊。它所能达到的效果是—在CMD窗口中的一种欺骗。并不是真正的“删除”
发表于 2011-3-13 10:22:55 | 显示全部楼层
删除的效果是通过退格键+空格或者tab达到的,退格键在我看来更像键盘上的left键+insert开关
发表于 2011-3-13 10:26:52 | 显示全部楼层

回复 8楼 的帖子

  1. @echo off
  2. set var=123
  3. set a=%var% 
  4. >1.txt echo %a%
  5. pause>nul
复制代码
试一下吧。看看1。TXT里的内容
发表于 2011-3-13 11:05:14 | 显示全部楼层
噢&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 楼主| 发表于 2011-3-13 14:18:27 | 显示全部楼层

回复 6楼 的帖子

谢谢大哥。。。解析的很明白。。高手就是不一样。。作者也真是的。。非要加两个空格再加两个退格。。搞得稀里糊涂。。以后有问题还想您请教。。谢谢
发表于 2011-3-13 18:51:45 | 显示全部楼层
不用谢哈,咱们都是菜鸟,我也是在各位前辈的指导下慢慢知道怎么用的,细心学习嘛,咱们共同提高。
发表于 2011-8-10 18:29:03 | 显示全部楼层
试过了~
蛮好用的~
也更了解findstr的用法~
谢谢各位的解释~
我这只菜鸟及时才能看懂这些代码啊~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 01:50 , Processed in 0.024718 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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