您的位置:首页 > 其它

批处理延时方法小结

2009-10-21 13:17 204 查看
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.[讨论]批处理编程的异类
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: