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

[其他] 批处理延迟时间的方法有几种?

我知道的是使用ping 和 使用 循环(for /l %%a in (1 1 500) do set /p=<nul))
ㄗs:A good programming is 99% sweat and 1% coffee!--①個亾

============ >   hi.baidu.com/novaa   <============

还可以使用wscript.sleep  
例如延时5秒
wscript.sleep 5000
就可以了。

TOP

收集整理的各种延时方法

1、利用ping命令实现延时,方法巧妙而且可以控制,但精度不高。
如:ping -n 3 127.0.0.1>nul大约可以停顿2秒
-n后的数字是发送包的数目,为暂停秒数加一。此法每秒有0.5%的偏差,时间精度为1秒。

2、用vbs脚本中的sleep实现,样本代码如下:
以上程序代码可以实现暂停2秒,2秒过后回显OK!
  1. @echo off
  2. echo Wscript.Sleep Wscript.Arguments(0) * 1000>Delay.vbs
  3. Delay.vbs 2
  4. del Delay.vbs
  5. echo OK!
复制代码
3、利用“死”循环:设定一个时间差,如果当前时间与设定时间之差不大于设定之时间差,则不退出该循环,从而达到延时的目的。样本代码:
  1. @echo off
  2. set /a Start=%time:~6,2%
  3. :ProDelay
  4. set /a Now=%time:~6,2%
  5. set /a Diff=%Now%-%Start%
  6. rem 以下这一句可以防止秒数从59跳到1时产生的错误。
  7. if %Diff% lss 0 set /a Diff=%Diff%+60
  8. if %Diff% leq 2 goto :ProDelay
  9. echo ok!
复制代码
4、利用at命令。不过此方法与其说是延时,还不如说成定时的好,而且还要开启相应服务。

5、最精确的延时方法:sleep.exe
  1. @echo off
  2. echo q | debug>nul
  3. echo Bj@jzh`0X-`/PPPPPPa(DE(DM(DO(Dh(Ls(Lu(LX(LeZRR]EEEUYRX2Dx=>sleep.com
  4. echo 0DxFP,0Xx.t0P,=XtGsB4o@$?PIyU WwX0GwUY Wv;ovBX2Gv0ExGIuht6>>sleep.com
  5. echo T}{z~~@GwkBG@OEKcUt`~}@MqqBsy?seHB~_Phxr?@zAB`LrPEyoDt@Cj?>>sleep.com
  6. echo pky_jN@QEKpEt@ij?jySjN@REKpEt@jj?jyGjN@SEKkjtlGuNw?p@pjirz>>sleep.com
  7. echo LFvAURQ?OYLTQ@@?~QCoOL~RDU@?aU?@{QOq?@}IKuNWpe~FpeQFwH?Vkk>>sleep.com
  8. echo _GSqoCvH{OjeOSeIQRmA@KnEFB?p??mcjNne~B?M??QhetLBgBPHexh@e=>>sleep.com
  9. echo EsOgwTLbLK?sFU`?LDOD@@K@xO?SUudA?_FKJ@N?KD@?UA??O}HCQOQ??R>>sleep.com
  10. echo _OQOL?CLA?CEU?_FU?UAQ?UBD?LOC?ORO?UOL?UOD?OOI?UgL?LOR@YUO?>>sleep.com
  11. echo dsmSQswDOR[BQAQ?LUA?_L_oUNUScLOOuLOODUO?UOE@OwH?UOQ?DJTSDM>>sleep.com
  12. echo QTqrK@kcmSULkPcLOOuLOOFUO?hwDTqOsTdbnTQrrDsdFTlnBTm`lThKcT>>sleep.com
  13. echo @dmTkRQSoddTT~?K?OCOQp?o??Gds?wOw?PGAtaCHQvNntQv_w?A?it\EH>>sleep.com
  14. echo {zpQpKGk?Jbs?FqokOH{T?jPvP@IQBDFAN?OHROL?Kj??pd~aN?OHROd?G>>sleep.com
  15. echo Q??PGT~B??OC~?ipO?T?~U?p~cUo0x>>sleep.com
  16. sleep.com>sleep.exe
  17. del sleep.com
  18. echo wait 2 seconds:
  19. sleep.exe 2000  
复制代码
6、msg
  1. @echo off
  2. msg * /time:2 /w "正在延时,点确定可以取消延时!"
复制代码
7、通过循环命令来达到延时:
  1. @echo off
  2. :TimeDelay  1000
  3. pause>nul
  4. exit
  5. :TimeDelay 次数
  6. for /l %%i in (1 1 %1) do ver>nul
  7. goto :eof
复制代码
2

评分人数

TOP

5、最精确的延时方法:sleep.exe


这个是不是要用到sleep.exe这个文件?是Windows自带的吗?
还有前面的一堆字母不知是什么意思哟?

[ 本帖最后由 tcl 于 2008-2-13 16:52 编辑 ]

TOP

本帖最后由 pcl_test 于 2016-8-14 10:49 编辑

回复 3# youxi01

它说sleep.exe不是有效的Win 32程序

TOP

延时还可以用
choice
choice /t 2  /c yn /d y /n

TOP

看不明白的咧。还要继续深入学习。

TOP

一点改进~~~

冒昧讲一下,youxi01第三种利用“死循环”的方法,是不是只能延迟在1分钟以内,并且精确度为1秒吧?还有一个小bug,就是在运行是会出现数字识别错误的问题,我想大概是截取的两位秒数有可能出现01,02,03...吧?
        系统时间的格式为 1:49:46.26(注:前面的1之前有一空格),是精确到10毫秒的,所以利用死循环也可以精确到10毫秒。
  1. @echo off
  2. :begin
  3. echo ===========================
  4. set /p delay=请输入需要延迟的毫秒数:
  5. set TotalTime=0
  6. set NowTime=%time%
  7. echo 程序开始时间:%NowTime%
  8. :_delay
  9. set /a minute1=1%NowTime:~3,2%-100
  10. set /a second1=1%NowTime:~-5,2%%NowTime:~-2%0-100000
  11. set NowTime=%time%
  12. set /a minute2=1%NowTime:~3,2%-100
  13. set /a second2=1%NowTime:~-5,2%%NowTime:~-2%0-100000
  14. set /a TotalTime+=(minute2-minute1+60)%%60*60000+second2-second1
  15. if %TotalTime% lss %delay% goto _delay
  16. echo 程序结束时间:%time%
  17. echo 设定延迟时间:%delay%毫秒
  18. echo 实际延迟时间:%TotalTime%毫秒
  19. goto begin
复制代码
这样可以精确到10毫秒,一点想法,有什么错误欢迎大家指出。

TOP

不建议用死循环的办法,和其他编程一样,这种循环的办法都会消耗大量的系统资源,支持环保拒绝浪费
1

评分人数

TOP

3楼介绍的方法中,第三个方法 请解释一下这句的意思set /a Start=%time:~6,2%。谢谢。%time:~6,2% 这里看不懂。

TOP

回复 10楼 的帖子

echo %time%
::显示时间为   21:10:12.23
echo %time:~6,-2%
::显示为     12.(意思是去掉前面的6个字符,再舍去后面两个,显示剩下的)
要显示秒数要%time:~6,3%把数字后面的点也去掉!

[ 本帖最后由 zjw767676 于 2009-2-11 21:18 编辑 ]

TOP

晕了!怎么编辑不了啊?
应该是%time:~6,-3%

TOP

回复 12楼 的帖子

编辑不了?有报错信息不?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 13楼 的帖子

没有错误提示!改了之后点编辑帖子按钮,显示出来的还是原样!!!

TOP

本帖最后由 pcl_test 于 2016-8-14 10:50 编辑

回复 3# youxi01
运行后产生一个sleep.exe   是什么?

TOP

返回列表