Board logo

标题: [特效代码] [讨论]再谈批处理模拟2000开机动画效果 [打印本页]

作者: youxi01    时间: 2007-11-8 23:09     标题: [讨论]再谈批处理模拟2000开机动画效果

相应flash动画懒得做了,表述一下好了。

开始时,窗口显示成:
||||||||||||||||||||||||||||||||||||||||||
然后,第一个|换成>
>|||||||||||||||||||||||||||||||||||||||||
下一回:
>>||||||||||||||||||||||||||||||||||||||||
继续:
>>>|||||||||||||||||||||||||||||||||||||||
最后:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

原来已经有人写了相应的代码,但是,都是通过cls清屏来实现,使窗口看起来有震动的现象,效果不是很逼真...
不知道各位有何高见呢?
作者: 随风    时间: 2007-11-8 23:40

::
  1. @echo off&for /l %%a in (1 1 18) do echo\
  2. set /p=       <nul
  3. for /l %%i in (1 1 70) do set /p=^|<nul
  4. for /l %%i in (1 1 70) do set /p=<nul
  5. for /l %%i in (1,1,70) do (
  6. set/p=^><nul
  7. for /l %%a in (1 1 1000) do ver>nul
  8. )
  9. 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楼,把“|” 改成“=”:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /l %%i in (1 1 9) do echo\
  3. echo                                  Windows 2000
  4. for /l %%i in (1 1 9) do echo\
  5. set /p=     <nul
  6. set "str=^>"
  7. for /l %%i in (1 1 69) do set "str=!str!="
  8. set /p=%str%<nul
  9. for /l %%i in (1 1 70) do set /p=<nul
  10. for /l %%i in (1 1 70) do set /p=^><nul&ping -n 1 127.1>nul
  11. 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://bbs.bathome.net/) Powered by Discuz! 7.2