批处理 延时不完全总结
2869 点击·0 回帖
![]() | ![]() | |
![]() | 有时候我们的批处理需要一段时间的延迟,下面的方法是脚本的,比较方便,也有多种方法是利用小软件的。大家根据情况使用。
1、利用ping命令实现延时,方法巧妙而且可以控制,但精度不高。 如:ping -n 3 127.0.0.1>nul大约可以停顿2秒 -n后的数字是发送包的数目,为暂停秒数加一。此法每秒有0.5%的偏差,时间精度为1秒。 2、用vbs脚本中的sleep实现,样本代码如下: -------------------------------------- @echo off echo Wscript.Sleep Wscript.Arguments(0) * 1000>Delay.vbs Delay.vbs 2 del Delay.vbs echo OK! --------------------------------------- 以上程序代码可以实现暂停2秒,2秒过后回显OK! 3、利用“死”循环:设定一个时间差,如果当前时间与设定时间之差不大于设定之时间差,则不退出该循环,从而达到延时的目的。样本代码: --------------------------------------------------- @echo off set /a Start=%time:~6,2% :ProDelay set /a Now=%time:~6,2% set /a Diff=%Now%-%Start% rem 以下这一句可以防止秒数从59跳到1时产生的错误。 if %Diff% lss 0 set /a Diff=%Diff%+60 if %Diff% leq 2 goto :ProDelay echo ok! --------------------------------------------- 以上程序也可以实现延时2秒的目的。 4、利用at命令。不过此方法与其说是延时,还不如说成定时的好。 5、 @echo off & setlocal enableextensions echo WScript.Sleep 1000 > %temp%.\tmp$$$.vbs set /a i = 5 :Timeout if %i% == 0 goto Next setlocal set /a i = %i% - 1 cls echo DOS倒计时程序:alike收集 echo ################################## echo # # echo # [%i%]秒后程序开始运行 # echo # # echo ################################## cscript //nologo %temp%.\tmp$$$.vbs goto Timeout goto End :Next cls & echo. for %%f in (%temp%.\tmp$$$.vbs*) do del %%f start edit boot.ini exit | |
![]() | ![]() |