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

[特效代码] 文字延时逐字显示

“我不想让你哭,也不想认输,只想用我的爱再次把你留住”,能不能用批处理把这些文字一个一个按顺序显示出来,时差最好是0.5秒?
不管黑猫白猫,会捉老鼠的猫就是好猫!

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "str=我不想让你哭,也不想认输,只想用我的爱再次把你留住。"
  4. for /l %%a in (0 1 100) do (
  5.      if "!str:~%%a,1!" neq "" (
  6.          set/p=!str:~%%a,1!<nul
  7.          sleepx -m 500
  8.          ) else (
  9.          pause>nul&exit/b
  10. ))
复制代码
心绪平和,眼藏静谧。

TOP

我把代码直接复制后,运行后不行!
不管黑猫白猫,会捉老鼠的猫就是好猫!

TOP

我刚才在新手区看到的,代码这样就可以了,还是谢谢你了!


@echo off&setlocal enabledelayedexpansion
set "str=我不想让你哭,也不想认输,只想用我的爱再次把你留住"
for /l %%a in (0 1 50) do (
      if "!str:~%%a,1!" neq "" (
          set/p=!str:~%%a,1!<nul
          for /l %%i in (1 1 400) do echo.>nul
         ) else (
         pause>nul&exit/b
     )
)
1

评分人数

    • lixiaodaoaaa: 非常不错!如果你能给大家解释一下,我会给 ...PB + 1
不管黑猫白猫,会捉老鼠的猫就是好猫!

TOP

for /l %%i in (1 1 400) do echo.>nul
这样虽能起到延时的作用,但不能精确到0.5s。
第一段代码是需要借助第三方工具的,sleepx.exe
延时精确。
心绪平和,眼藏静谧。

TOP

其实也不用说精确到0.5秒,有廷时的效果就可以了!谢谢了!
不管黑猫白猫,会捉老鼠的猫就是好猫!

TOP

回复 3楼 的帖子

如果代码里面格式化之类的代码,你也复制以后直接运行吗^_^
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

不知楼上是不理解怎么延时还是不理解整个代码,如果要对整个代码都进行说明,不是要把整
个相关的dos命令都详细说明一下,所以请大家以后发问时最好能截取要说明的部分,不然是没
人会有来回答这样的问题的。
***共同提高***

TOP

不错,但是我不太懂。。

原帖由 AK47 于 2008-9-22 00:08 发表
我刚才在新手区看到的,代码这样就可以了,还是谢谢你了!


@echo off&setlocal enabledelayedexpansion
set "str=我不想让你哭,也不想认输,只想用我的爱再次把你留住"
for /l %%a in (0 1 50) do (
       ...


代码不错,呵呵,请楼主抽个时间,详细分析一下代码,我想大家都会很感谢你的
我是看的不太懂。。。

TOP

呵呵,不好意思,我也是刚学批处理的菜鸟!这段代码我也是不怎么懂!
不管黑猫白猫,会捉老鼠的猫就是好猫!

TOP

我来一个,顺便解释下:
  1. @echo off
  2. set "str=我不想让你哭,也不想认输,只想用我的爱再次把你留住。"
  3. :lp
  4. set /p=%str:~,1%<nul&set "str=%str:~1%"
  5. for /l %%i in (1,1,500) do echo>nul
  6. if defined str goto lp
  7. pause>nul
复制代码
代码就是利用的set /p=<nul同行追加输出功能,通过对字符串str的逐字截取并追加输出,同时
使用for循环来实现对字符的延时显示效果。大家注意了这个echo>nul实是一个无效命令,反
正不管你采用什么方法只要能让命令无效同时将信息屏蔽掉,同时用for实现n次无效就能达到延
时的目的了。
***共同提高***

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "str=我不想让你哭,也不想认输,只想用我的爱再次把你留住。"
  4. for /l %%a in (0 1 100) do (
  5.      if "!str:~%%a,1!" neq "" (
  6.          set/p=!str:~%%a,1!<nul
  7.          sleepx -m 500
  8.          ) else (
  9.          pause>nul&exit/b
  10. ))
复制代码



for /l %%a in (0 1 100) do if "!str:~%%a,1!" neq "" set/p=!str:~%%a,1!<nul
用for 来控制0-100这些个数,并检测str的值在第几个字符不为空,不为空就打印出来。"!str:~%%a,1!" 在此处会扩展为"!str:~0,1!"  "!str:~1,1!" !str:~2,1!" ....."!str:~10,1!",~之后的“偏移”就是for中控制的数,如果不为空值,接下来就是set/p=!str:~%%a,1!<nul的作用了,输出!str:~%%a,1!但不换行,关于set/p的用法,具体请看http://bbs.bathome.net/thread-1940-1-1.html 5楼。
sleep -m 500,借用第三方工具sleep.exe,延时500毫秒。
以上,都是在!str:~%%a,1!不为空的情况下来的,如果检测到"!Str:~%%a,1!"为空又如何呢,就会执行else 中的语句,pause>nul&exit/b,暂停并退出,只要检测到一次就会退出。
心绪平和,眼藏静谧。

TOP

这三句能不能再解释得清楚一点!
set /p=%str:~,1%<nul&set "str=%str:~1%"
for /l %%i in (1,1,500) do echo>nul
if defined str goto lp
不管黑猫白猫,会捉老鼠的猫就是好猫!

TOP

运行以下代码吧:
  1. @echo off
  2. rem str值可自行修改
  3. set "str=123456789"
  4. set "a=%str%"
  5. :lp
  6. set /a n+=1
  7. echo 原始的str为:"123456789",经第%n%次循环并延时后
  8. set "var=%var%%str:~,1%"
  9. set /p=截取的字符为:"%str:~,1%",<nul&set "str=%str:~1%"
  10. set /p=str为:"%str%",<nul
  11. set /p=输出的字符串为:"%var%"。<nul
  12. for /l %%i in (1,1,2000) do echo>nul
  13. if defined str cls&goto lp
  14. pause>nul
复制代码

[ 本帖最后由 batman 于 2008-9-24 11:26 编辑 ]
***共同提高***

TOP

再运行以下代码娱乐娱乐:

  1. @echo off&color 1f&mode con lines=4
  2. for /l %%i in (1,1,40) do call,set "kong=%%kong%% "
  3. :begin
  4. set "str=%kong%亲爱的,我不想让你哭,也不想认输,只想用我的爱再次把你留住。"
  5. :lp
  6. echo.&echo.%str:~,40%&set "str=%str:~1%"
  7. for /l %%i in (1,1,1000) do echo>nul
  8. if defined str cls&goto lp
  9. goto begin
复制代码
***共同提高***

TOP

返回列表