批处理延时方法小结

来源:互联网 发布:北京有意思的地方知乎 编辑:程序博客网 时间:2024/06/05 09:18

1.ping

CODE:  [Copy to clipboard]
@echo off
:loop
    echo %time%
    ping 127.1 -n 2 1>nul
    echo %time%
goto loop

内存使用: cmd.exe  1704k
              ping.exe  2920k   
误差评定: 较高
优点:       代码构造简单
缺点:       内存占用高,延迟时间长的话误差相对较大。


2.还是ping

CODE:  [Copy to clipboard]
@echo off
:loop
    echo %time%
    ping 1 -n 1 -w 1000 2>nul 1>nul
    echo %time%
goto loop

内存使用:  cmd.exe  1700k
               ping.exe  2912k
误差评定:  一般
优点:        代码构造简单,时间越长误差越小,精确度较高(50ms)
缺点:        内存占用高


3.call

CODE:  [Copy to clipboard]
@echo off
:loop
    echo %time%
    call :delay 1000
    echo %time%
goto loop

:delay
    set /a num=num + 1
    if %num% geq %1 (set num=) && goto :eof
rem    for /l %%i in (1,1,%1) do echo. >nul
goto :eof

内存使用:  cmd.exe 1744k  [for语句方案]
               cmd.exe 1740k  [set+goto方案]
误差评定:  很高 (受CPU频率影响非常大,几乎无法准确把握全局延迟时间)
优点:       精确度较高
缺点:        不适合需精确把握时间的场合

4.msg

CODE:  [Copy to clipboard]
@echo off
:loop
    echo %time%
    msg %username% /time:20 /w "正在延时,点确定可以取消延时!"
    echo %time%
goto loop

内存使用:  cmd.exe  1752k
               msg.exe  2620k
误差评定:  低
优点:       比较稳定,可中途取消延时,代码构造简单
缺点:        内存占用非常大,有窗口弹出(优点?缺点?)

5.vbs

CODE:  [Copy to clipboard]
@echo off
    echo Wscript.Sleep WScript.Arguments(0) >%tmp%/delay.vbs
:loop
    echo %time%
    cscript //b //nologo %tmp%/delay.vbs 2000
    echo %time%
goto loop

内存使用:  cscript.exe 4812k
               cmd.exe    1708k
误差评定:  很低
优点:        精确度最高,使用更灵活,方便
缺点:        产生临时文件,内存占用多


End:
1.测试条件有限,以上数据并不具备权威性。
2.关于精确度。
   其实只要是参数可以指定时间的命令精确度都比较高,之所以受影响是取决与命令执行的次数,次数越多,精确度越低。而方案5[vbs方案]中之所以说它的精确度最高,可以举个例子: cscript //b //nologo delay.vbs 2036,而方案二由于最小精确度的缘故,还是比方案5要差一点。
3.欢迎大家补充。
参考链接:
1.从一个GIF文件引起的麻烦  
2.[讨论]批处理编程的异类

原创粉丝点击