炫酷的批处理BAT走字特效源码
先上第一版的代码,
代码肯定还存在BUG,先发上来给大家测试.
@echooff&setlocalenabledelayedexpansion modecon:cols=87lines=15 titlecodebyfoxjl2007-12-1www.nhooo.com color1a setlong=43,minus=43 set,=^ 我们,是一群执著的批处理爱好者^ 在色彩斑斓的WINDOWS下,开启CMD这扇深邃的窗口^ 曾经挑灯夜战,曾经彻夜不眠^ 我们之所以如此似痴若狂,是因为我们深知:^ 尺有所短、寸有所长,CMD不同凡响^ 我们精益求精,力求完美^ 所有的努力,只为了用最简洁的语言,编写最具实用性的代码^ 毛票票www.nhooo.com^ 高手汇聚、资料齐全、是新手入门的福地、老手晋级的乐园^ 不求最大、但求最好、展现批处理的无穷魅力、一切精彩,尽在~~毛票票~~演示完毕。再见!! :start echo. for%%iin(84-14-14-110-18-116-7,84-14-14-110-18-18-54-14-1,8-42-14-110-42-112-12-7,84-14-14-12-16-14-12-210-12-14-14-1,84-14-22-26-16-12-12-14-54-14-1,84-22-14-18-14-14-14-16-12-7,8-34-14-16-12-12-14-112-18-1,84-14-14-112-16-112-14-5,84-14-12-22-18-16-112-26-1,84-14-22-12-16-12-22-18-210-1,8-34-14-32-28-58-8)do( (if"%%i"==","(echo.&ping-n1127.1>nul))&&(seta=%%i)&(setb=!a:-=!) if%%ilss0(for/l%%jin(1,1,!b!)do(set/p=▓<nul))else(for/l%%kin(1,1,%%i)do(set/p=<nul) ) ) call:delay700 echo\&echo\ for/l%%zin(1,1,255)do( ifnot!long!equ0set/along-=1 for/l%%jin(1,1,87)do(set/p=<nul) for/l%%kin(1,1,!long!)do(set/p=<nul) set/alongn+=1 set/alongs=longn-43 set/aremnant=255-43 if!longn!lss43(set/p=!,:~0,%%z!<nul)else( if!longn!geq!remnant!( set/aminus-=1 set/aminuss=minus*2 for/l%%lin(1,1,!minus!)do(set/p=<nul) for/l%%jin(1,1,!minuss!)do(set/p=<nul) callset/p=%%,:~!longs!,43%%<nul )else( callset/p=%%,:~!longs!,43%%<nul ) ) call:delay40修改这个数字可以调整走字的速度. ) call:delay700&exit :delay for/l%%iin(1,1,%1)do(error>nul2>nul) goto:eof
动画效果很不错,象电视里的飞字幕.很有观赏性.
真是开了眼了set,=^再把每句最后加个^符号,就可以把它们都赋值给变量,?这是什么原理?并且最后一句末尾又没有^符号?
不过,飞字幕部分,代码似乎可以更简洁.
来看看第二版的代码
: @echooff&setlocalenabledelayedexpansion titlecodeby泛滥棏慌°2007-12-1www.nhooo.com modecon:cols=87lines=15 for/l%%lin(1142)doset"ko=!ko!" color1a&echo\&set,=!ko!^ 我们,是一群执著的批处理爱好者^ 在色彩斑斓的WINDOWS下,开启CMD这扇深邃的窗口^ 曾经挑灯夜战,曾经彻夜不眠^ 我们之所以如此似痴若狂,是因为我们深知:^ 尺有所短、寸有所长,CMD不同凡响^ 我们精益求精,力求完美^ 所有的努力,只为了用最简洁的语言,编写最具实用性的代码^ 毛票票www.nhooo.com^ 高手汇聚、资料齐全、是新手入门的福地、老手晋级的乐园^ 不求最大、但求最好、展现批处理的无穷魅力、一切精彩,尽在~~毛票票~~演示完毕。再见!! for%%iin(84-14-14-110-18-116-7,84-14-14-110-18-18-54-14-1,8-42-14-110-42-112-12-7,84-14-14-12-16-14-12-210-12-14-14-1,84-14-22-26-16-12-12-14-54-14-1,84-22-14-18-14-14-14-16-12-7,8-34-14-16-12-12-14-112-18-1,84-14-14-112-16-112-14-5,84-14-12-22-18-16-112-26-1,84-14-22-12-16-12-22-18-210-1,8-34-14-32-28-58-8)do( (if"%%i"==","(echo.&ping-n1127.1>nul))&&(seta=%%i)&(setb=!a:-=!) if%%ilss0(for/l%%jin(1,1,!b!)do(set/p=▓<nul))else(for/l%%kin(1,1,%%i)do(set/p=<nul) )) call:delay700&echo\&echo\ for/l%%lin(11255)do( set/p=!,:~0,43!<nul call:delay40修改这个数字可以调整走字的速度. for/l%%jin(1,1,87)do(set/p=<nul) set,=!,:~1! ) call:delay700&exit :delay for/l%%iin(1,1,%1)do(error>nul2>nul) goto:eof