标题: [特效代码] 批处理实现将一行字符串从首尾两端同时逐渐显示 [打印本页]
作者: 随风 时间: 2007-12-29 22:54 标题: 批处理实现将一行字符串从首尾两端同时逐渐显示
本帖最后由 pcl_test 于 2017-3-31 16:37 编辑
从两头显示,novaa 说的可是这个意识?
:- @echo off
- setlocal enabledelayedexpansion
- set var=欢迎光临批处理之家
- for /l %%a in (1 1 80) do set t=!t!
- for /l %%a in (1 1 36) do set ko= !ko!
- for /l %%i in (1 1 9) do (
- set /p= !var:~0,%%i!!ko!!var:~-%%i!<nul
- for /l %%a in (1 1 800) do ver>nul
- set /p=!t!<nul
- set ko=!ko:~2!
- )
- pause>nul
复制代码
作者: novaa 时间: 2007-12-30 00:17
哈哈
就是这个啦!!
作者: youxi01 时间: 2007-12-30 11:40 标题: 回复 1# 的帖子
有点瑕疵:觉得不是很流畅...
作者: newyj 时间: 2007-12-30 21:01
set /p=!t!<nul
set ko=!ko:~2!
这两句不是太懂的 在这个P中起什么作用
还有就是我把for /l %%a in (1 1 80) do set t=!t!删了的话 就不行了
还请讲解一下 谢谢了
作者: novaa 时间: 2007-12-30 21:48
原帖由 newyj 于 2007-12-30 21:01 发表
set /p=!t!
你应该知道这个用法吧。
set /p bathome=请输入帐号:
这里set /p=!t!<nul就是不要求用户输入。而是从空设备输入。同时!t!起退格符的作用。
对于第二个!ko:~2!请在教学区看随风版主的截止符的作用。
第三个是关于退格符的作用。请看模拟2K开机条这个帖子。
作者: newyj 时间: 2007-12-31 11:12
我主要是不知道随风斑竹写的这个是怎么能实现从两边显示的
能否讲解一下 这里的原理
作者: ieutk 时间: 2007-12-31 15:25
我主要是不知道随风斑竹写的这个是怎么能实现从两边显示的
能否讲解一下 这里的原理
- @echo off
- setlocal enabledelayedexpansion
- set var=欢迎光临批处理之家
复制代码
上面几段就不用作解释了吧,想必大家都明白- for /l %%a in (1 1 80) do set t=!t!
复制代码
这一段代码就是预设变量t的值为80个
如果用户CMD窗口大小没有自定义,默认的长方向应该就是80左右吧- for /l %%a in (1 1 36) do set ko= !ko!
复制代码
[这一段代码就是预设变量ko的值为36个 ]
这个符号我也不知道是什么符号,就当它是两字节的空格吧,上面为了好看所以用括号括起来- for /l %%i in (1 1 9) do (
- set /p= !var:~0,%%i!!ko!!var:~-%%i!<nul
- for /l %%a in (1 1 800) do ver>nul
- set /p=!t!<nul
- set ko=!ko:~2!
- )
复制代码
这是一个FOR嵌套语句,是整个代码的关键部份- set /p= !var:~0,%%i!!ko!!var:~-%%i!<nul
复制代码
看这一句,set/p=<nul的用法5楼己经说过
- !var:~0,%%i!!ko!!var:~-%%i!
复制代码
这一行就是你想了解的怎么能实现从两边显示
!var:~0,%%i!就是变量的截取功能,第一次它的值是"欢",第二次是"欢迎"以此类推
!ko!就不用说了,上面有解说过
!var:~-%%i!这个也是变量的截取功能,第一次它的值是"家",第二次是"之家"以此类推- for /l %%a in (1 1 800) do ver>nul
复制代码
这个代码是起延时作用的复制代码
这个呢就是删除的意思,删除原先的,再显示,cls清屏也可以做到,但是用cls清屏给人的感觉是一跳一跳的,不流畅复制代码
这行代码也是变量的截取功能,在变量ko中截取第三个开始的后面所有值,也就是舍去前面两位值
呵呵,能力有限,不知说的对不对
[ 本帖最后由 ieutk 于 2007-12-31 15:33 编辑 ]
作者: youxi01 时间: 2008-1-1 09:38
呵呵,年轻人解释的不错嘛
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |