标题: [特效代码] [讨论]再谈批处理模拟2000开机动画效果 [打印本页]
作者: youxi01 时间: 2007-11-8 23:09 标题: [讨论]再谈批处理模拟2000开机动画效果
相应flash动画懒得做了,表述一下好了。
开始时,窗口显示成:
||||||||||||||||||||||||||||||||||||||||||
然后,第一个|换成>
>|||||||||||||||||||||||||||||||||||||||||
下一回:
>>||||||||||||||||||||||||||||||||||||||||
继续:
>>>|||||||||||||||||||||||||||||||||||||||
最后:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
原来已经有人写了相应的代码,但是,都是通过cls清屏来实现,使窗口看起来有震动的现象,效果不是很逼真...
不知道各位有何高见呢?
作者: 随风 时间: 2007-11-8 23:40
::- @echo off&for /l %%a in (1 1 18) do echo\
- set /p= <nul
- for /l %%i in (1 1 70) do set /p=^|<nul
- for /l %%i in (1 1 70) do set /p=<nul
- for /l %%i in (1,1,70) do (
- set/p=^><nul
- for /l %%a in (1 1 1000) do ver>nul
- )
- echo\&echo\&pause
复制代码
作者: namejm 时间: 2007-11-9 00:29
玩了那么久,今天才发现退格符号居然能跑到字符串头部去删除字符,对这段代码的执行过程百思不得其解:
首先生成70个|,然后,用70个退格符号去删除,那么以前的字符串应该都不能看到了才是,怎么还会停留在屏幕上呢?在第二个for后加上pause查看显示结果,发现"按任意键继续..."的提示居然跑到那70个|前面去了,真是倍感疑惑;就算是光标能定位到那70个|前面,最后一个for生成的>应该把那70个|往后挤才对啊,怎么会逐个"吃"掉后面的|呢?
看来,set /p=<nul 语句和退格符号的执行机制充满了神秘啊。
作者: youxi01 时间: 2007-11-9 01:23
呵呵,这个你就发现的比较晚了吧?!
退格键虽然能够“删除”字符,但是已经显示出来的字符它并不能真正的“清空”(不然的话,倒是可以实现很漂亮的动画效果了...)
作者: 随风 时间: 2007-11-9 02:19
其实退格键并不是删除字符,只是将光标定位到前面,若没有新的内容显示出来,前面显示的仍可以看见.
但新的内容会覆盖原来的内容.
作者: novaa 时间: 2007-11-9 10:56 标题: 同意楼上的
能讲解下那几个命令不?
作者: youxi01 时间: 2007-11-9 16:27
set /p=^|<nul的作用就是显示一个 |
注意:这里的|前面还有一个^,目的是将|转义,也就是告诉电脑,这个是一个字符而已,否则,电脑则会把它当成 管道符使用
for /l %i in (1 1 10) do set /p=^|<nul的作用就是显示 在一行上显示 10个|
set /p=<nul
这里指的是退格键
set/p=^><nul的意思同上
作者: novaa 时间: 2007-11-9 23:23
懂了
谢谢了
作者: youxi01 时间: 2007-11-10 18:29
原帖由 随风 于 2007-11-8 23:40 发表
::@echo off&for /l %%a in (1 1 18) do echo\
set /p=
不过,话又说回来,通过大量重复的命令的方法来 达到延时的效果是不是有点 “夸张” 呢?呵呵,不过倒是一种方法之一...
作者: novaa 时间: 2007-11-26 13:18
呵呵
懂退格符的用法了
哈哈
作者: zh99998 时间: 2008-2-1 07:59
ping 127.1 -n 1 >nul 延时
不过,windows2000开机动画是
>>>>>>>>>|||||||||||||||||||吗?
我记得是>>>>>>>>>>============
作者: 希望的寄托 时间: 2008-2-4 10:05
退格键怎么打出来啊我怎么无论如何都打不出来啊
作者: novaa 时间: 2008-2-4 18:17
在CMD霞输入EDIT
百度下吧。我也忘记了。
作者: youxi01 时间: 2008-2-8 14:27
edit 下,直接按下 退格 键,然后将那个符号复制下来就可以了
作者: sonic_andy 时间: 2008-2-9 11:03
终于找到了可以在同一行动态显示字符的方法:)
作者: namejm 时间: 2008-3-1 00:41
如果 <nul 前面是0到9的数字的话,就要加^,除此之外的其他非特殊字符无须添加^,因为 <nul 前面的0到9的数字会被默认为是句柄,就像我们常用 2>nul 来屏蔽错误输出中的 2 一样。
关于句柄的详情,请运行 hh.ntcdms.chm::ntcmds.htm,查阅 Redirection Operators(重定向运算符) 一节。
作者: keen 时间: 2009-5-24 14:21
回复12楼,17楼,把“|” 改成“=”:- @echo off&setlocal enabledelayedexpansion
- for /l %%i in (1 1 9) do echo\
- echo Windows 2000
- for /l %%i in (1 1 9) do echo\
- set /p= <nul
- set "str=^>"
- for /l %%i in (1 1 69) do set "str=!str!="
- set /p=%str%<nul
- for /l %%i in (1 1 70) do set /p=<nul
- for /l %%i in (1 1 70) do set /p=^><nul&ping -n 1 127.1>nul
- pause>nul
复制代码
[ 本帖最后由 keen 于 2009-5-25 12:17 编辑 ]
作者: cainkl 时间: 2011-3-8 10:24
win7 dos 没有edit 咋办啊?
作者: CrLf 时间: 2011-3-8 13:32
退格键代表的不是backspace,而是left
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |