Board logo

标题: [游戏娱乐] 批处理彩字输出 [打印本页]

作者: broly    时间: 2010-7-27 18:12     标题: 批处理彩字输出

献词一首。(水平不高,献丑了)
  1. ::-------------Welcome to www.bathome.net---------------
  2. @mode con cols=56 lines=12 & @title 献词一首 by Broly
  3. @echo off&setlocal enabledelayedexpansion
  4. set m=0
  5. set str=2367abcdef
  6. for /f "delims=" %%i in ('more +22 "%~nx0"') do (set "t=%%i" &call :loop)
  7. echo\ &echo                   Welcome to www.bathome.net
  8. pause>nul & exit
  9. :loop
  10. if not "!t:~%m%,1!"=="" (
  11. set /a rnd=%random%%%11
  12. >"!t:~%m%,1!_",set /p "=   "<nul
  13. findstr /a:0!str:~%rnd%,1! .* "!t:~%m%,1!_*" 2>nul
  14. ping -n 1 127.1>nul
  15. del "!t:~%m%,1!_"
  16. set /a m+=1
  17. goto loop)
  18. set m=0
  19. echo.
  20. goto :eof
  21. =========分=====割=====线==========
  22.    念奴娇·赤壁怀古  苏轼
  23. 大江东去,浪淘尽,千古风流人物。
  24. 故垒西边,人道是,三国周郎赤壁。
  25. 乱石穿空,惊涛拍岸,卷起千堆雪。
  26. 江山如画,一时多少豪杰!
  27. 遥想公瑾当年,小乔初嫁了,雄姿英发。
  28. 羽扇纶巾,谈笑间,樯橹灰飞烟灭。
  29. 故国神游,多情应笑我,早生华发。
  30. 人生如梦,一樽还酹江月。
复制代码
链接: https://pan.baidu.com/s/1TR8CjbWxmqZwjaxAnanlbw?pwd=mmm7
作者: fish    时间: 2010-7-31 00:50     标题: 水平这么高还说不高,前辈也太谦虚了吧。。。

不过在我这里运行有点小问题,希望前辈帮忙看看
作者: broly    时间: 2010-7-31 09:48     标题: 回复 2楼 的帖子

首先多谢你的关注。
你直接运行批处理就可以了,不要用BatProject运行,会出错。
另外,为了避免复制时会发生一些错误,我把批处理上传了
作者: fish    时间: 2010-7-31 12:06     标题: 哇,太感谢前辈了!

好用好用,太帅了,五彩缤纷五颜六色的,还有动态效果,简直让我怀疑前辈您是不是搞美工的,强赞一个。。。
作者: broly    时间: 2010-7-31 12:58     标题: 回复 4楼 的帖子

呵呵,太过奖了。
其实这些知道了原理,制作这种效果不难的
作者: raymai97    时间: 2010-10-8 00:16     标题: 回复 5楼 的帖子

请教下我原理可以吗?看不明白。
作者: broly    时间: 2010-10-9 17:41     标题: 回复 6楼 的帖子

C:\Windows\System32>findstr /?

  /A:attr    指定有十六进位数字的颜色属性。请见 "color /?"

[ 本帖最后由 broly 于 2010-10-9 17:42 编辑 ]
作者: Batcher    时间: 2010-10-9 19:44     标题: 回复 6楼 的帖子

批处理在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
作者: shujia    时间: 2010-10-24 12:02

原帖由 Batcher 于 2010-10-9 19:44 发表
批处理在CMD里显示彩色文字
http://bbs.bathome.net/thread-1852-1-1.html

批处理单行输出彩色字符
http://bbs.bathome.net/thread-1853-1-1.html

批处理单行显示多种颜色字符
http://bbs.bathome.net/thre ...


lz真是热心人
作者: wc726842270    时间: 2010-10-26 13:35

“set /p "=   "<nul”有些不理解,这里面退格符的作用是什么啊?
作者: broly    时间: 2010-10-26 22:23     标题: 回复 10楼 的帖子

批处理显示彩色字符的原理及其中退格符的作用
http://bbs.bathome.net/viewthread.php?tid=1331#pid11864
作者: wc726842270    时间: 2010-10-26 22:54

这个看过了,但还是不能理解,能不能说一下这里它的用途啊,我仅仅明白像这样的
  1. set /p=234567 <nul
  2. echo wc
复制代码
但这样的理解太过局限了,无法应用到实战啊(最近在网吧上网,连@ECHO OFF都不好使了,所以无法实验,请谅解)
作者: wc726842270    时间: 2010-11-4 09:51

经过了几天的艰熬,终于明白了一些了
作者: broly    时间: 2010-11-4 18:21     标题: 回复 13楼 的帖子

其实原理就在那里,呵呵
作者: wc726842270    时间: 2010-11-4 18:28     标题: 回复 14楼 的帖子

只不过我有点笨了点,一开始理解的太狭隘了,经过反复的实验,问题出现在这吧
  1. set /a rnd=%random%%%11
  2. >"!t:~%m%,1!_",set /p "=   "<nul
复制代码

这里的">“前一定要在行首,但不知道为什么,我做了以下实验
  1. @echo off&setlocal enabledelayedexpansion
  2. cd.
  3. >"1_",set /p "=  "<nul
  4. findstr /a:2a .* "1_*"
  5. pause
复制代码

结果是一样的,虽然时间漫长了点,但可算是能应用退格符了。呵呵

[ 本帖最后由 wc726842270 于 2010-11-5 23:02 编辑 ]
作者: broly    时间: 2010-11-5 23:08     标题: 回复 15楼 的帖子

不一定要在行首啊。就是输出嘛,前后都可以。但有些特殊情况是不可以的
作者: wc726842270    时间: 2010-11-5 23:13     标题: 回复 16楼 的帖子

最关键是它一换位置,运行就不对啊,如果真是这样,能否给个简单的代码啊,谢谢了
作者: broly    时间: 2010-11-5 23:27     标题: 回复 17楼 的帖子

哪里出问题了?

比如你要输入 2 到 a.txt 这个文件,你这样就不可以
  1. echo 2>a.txt
复制代码
要这样才可以
  1. >a.txt echo 2
复制代码

>>   >  这些符号前面如果是1~9 的话就会有异常

[ 本帖最后由 broly 于 2010-11-6 00:16 编辑 ]
作者: wc726842270    时间: 2010-11-5 23:40     标题: 回复 18楼 的帖子

呵呵,例子有些不对啊,1和2经测式都能正常执行,但2的用法倒是头一次见到,
再看看LZ的代码,LZ竟是用“>"!t:~%m%,1!_",set /p "=   "<nul”建立的文件,真是巧秒啊,这样文件"!t:~%m%,1!_"也就非空了,才能用FINDSTR /A来执行,真是高人啊

[ 本帖最后由 wc726842270 于 2010-11-5 23:48 编辑 ]
作者: broly    时间: 2010-11-6 00:17     标题: 回复 19楼 的帖子

噢,例子的确错了,悲剧,呵呵。
现在改回来了。
呵呵,你太过奖我了。我只是一个菜鸟而已。
作者: mysuperbat    时间: 2010-11-6 15:30

下来看看,到底是啥效果
作者: lschebin    时间: 2010-11-16 12:57

高手呀!真是的!
作者: vincentzhou    时间: 2010-12-30 15:45

findstr /a:0!str:~%rnd%,1! .* "!t:~%m%,1!_*" 2>nul   中的2代表什么意思呢?用大于等于2的数字替代都能行 但是用用1替代就不行了,而且即使去掉2>nul 这个部分依然能够程序正常运行。
作者: wc726842270    时间: 2010-12-30 19:33     标题: 回复 24楼 的帖子

2>nul   将错误导入空设备中 1>NUL 将标准输出导入空设备中
1>NUL 2>NUL屏蔽信息
作者: howeless    时间: 2010-12-31 10:27

大牛啊!!!!!!!摸派大牛,哈哈
作者: garyng    时间: 2011-8-22 15:37

强!
五彩缤纷的勒~
作者: cjiabing    时间: 2011-8-22 16:14

回复 25# wc726842270


    原来你就是“网吧男”,难能可贵啊!~学习的精神令人敬佩!
作者: clonecd    时间: 2012-5-20 13:30

退格符的高级应用,老大真是高人啊。我慢慢学习吧。谢谢分享。
作者: dgyd    时间: 2012-5-29 13:15

挺不错的,支持一下
作者: zaixinxiangnian    时间: 2012-7-11 18:31

虽好多看不懂

我也要花时间研究下
作者: zaixinxiangnian    时间: 2012-7-15 22:37

回复 1# broly

看了下没能看懂
    1.FOR 里面的 "%~nx0"  什么意思啊
2.%random%%%11   random不是随机数吗,,,好现这样子是有规率的随机数?
3.>"!t:~%m%,1!_",set /p "=   "<nul    什么意思啊?

肯请老大帮忙理解
作者: broly    时间: 2012-7-16 14:12

回复 33# zaixinxiangnian


    1.%~nx0的值是本批处理的名字
    2.%random%%%11 返回的是0~11之间的随机数
    3.这句的意思是把字符串"  "保存到一个名为"!t:~%m%,1!_"的文件(里面是由于变量!t:~%m%,1!不同而得到不同的名字)
作者: 狱渊    时间: 2013-4-28 20:52

回复 2# fish


    谢谢了  我发现要弄到桌面才可以哦
作者: myping056    时间: 2013-12-19 16:06

运行后,把窗口给关闭了,还得重启计算机,哎
作者: raoletian    时间: 2021-6-27 10:45

不错是不错,就是最后几行运行起来比较卡慢,是什么原因呢?




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2