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

【出题】显示移动文字的批处理函数

本帖最后由 plp626 于 2011-5-9 20:02 编辑

下面代码保存为test.html
  1. <HTML>
  2.   <BODY>
  3. <marquee scrollamount=10 width=200  behavior=scroll>bbs.bathome.net</marquee> <P>
  4. <marquee scrollamount=5 width=200  behavior=alternate>bbs.bathome.net</marquee> <P>
  5.                 <marquee scrollamount=15 width=200  behavior=slide>bbs.bathome.net</marquee>
  6.   </BODY>
  7. </HTML>
复制代码
现在用批处理分别实现上面scroll,alternate,slide三个效果:
  1. call:marquee "scrollamount=10 width=200  behavior=scroll" "bbs.bathome.net"
复制代码
  1. call:marquee "scrollamount=5 width=200  behavior=alternate" "bbs.bathome.net"
复制代码
  1. call:marquee "scrollamount=15 width=200  behavior=slide" "bbs.bathome.net"
复制代码
移动文字通用函数,要求代码短小者为佳
  1. :marquee <"属性"> <"字符串">
  2. rem 等待你的实现。。。。
  3. goto:eof
复制代码
还有好多属性有待实现,比如:
  1. <HTML>
  2.   <BODY>
  3.       <marquee scrollamount=5 width=400  direction=left>bbs.bathome.net</marquee> <P>
  4.       <marquee scrollamount=10 width=400  direction=right>bbs.bathome.net</marquee> <P>
  5.       <marquee scrollamount=15 width=400  direction=down>bbs.bathome.net</marquee> <P>
  6.       <marquee scrollamount=20 width=400  direction=up>bbs.bathome.net</marquee> <P>
  7.   </BODY>
  8. </HTML>
复制代码
先看看大家的热情程度。
============================================
2011-5-9修订:
对于函数传递参数的格式不做硬性规定,

可以
  1. call:marquee "scrollamount=15 width=200  behavior=slide" "bbs.bathome.net"
复制代码
也可以
  1. ::主要是考虑到字符串作为值传递的很多缺陷,所以鼓励大家引用调用(将字符串保持在变量内,把变量名传递到函数体内)
  2. ::用逗号隔开属性值的方式,是考虑到cmd中set/a的特性,方便赋值。
  3. set str=bbs.bathome.net
  4. call:marquee "scrollamount=15, width=200, behavior=slide" str
复制代码
初衷是:让调用者觉得方便,同时又让函数的实现代码尽量简短(这个函数无需考虑效率问题)
============================================
看到大家有在函数内部求字符串长度的“操作”,我的观点是在参数传递时,可以把字符串的长度作为参数传递过去,这样可以保持marquee函数功能的单一,最大限度做到函数的复用。
  1. set Mystr=bbs.bathome.net
  2. call:strlen Mystr len
  3. call:marquee "scrollamount=10, width=200, behavior=slide" Mystr len
复制代码
不用过于拘泥于上面的参数格式(上面的调用格式仅是我的做法),我主要看有没有更好的方式以及精简的代码

(大家还可以将三个效果用三个函数分别实现)

返回列表