[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
LZ的这个却实是没见过.只能说对P还不了解.以下是小弟学习中查到的,分享一下
  1. @echo off
  2. set /p delay=请输入需延迟的毫秒数:
  3. set TotalTime=0
  4. set NowTime=%time%
  5. ::读取起始时间,时间格式为:13:01:05.95
  6. echo 程序开始时间:%NowTime%
  7. :delay_continue
  8. set /a minute1=1%NowTime:~3,2%-100
  9. ::读取起始时间的分钟数
  10. set /a second1=1%NowTime:~-5,2%%NowTime:~-2%0-100000
  11. ::将起始时间的秒数转为毫秒
  12. set NowTime=%time%
  13. set /a minute2=1%NowTime:~3,2%-100
  14. :: 读取现在时间的分钟数
  15. set /a second2=1%NowTime:~-5,2%%NowTime:~-2%0-100000
  16. ::将现在时间的秒数转为毫秒
  17. set /a TotalTime+=(%minute2%-%minute1%+60)%%60*60000+%second2%-%second1%
  18. if %TotalTime% lss %delay% goto delay_continue
  19. echo 程序结束时间:%time%
  20. echo 设定延迟时间:%delay%毫秒
  21. echo 实际延迟时间:%TotalTime%毫秒
  22. pause
复制代码
实现原理:首先设定要延迟的毫秒数,然后用循环累加时间,直到累加时间大于等于延迟时间。

误差:windows系统时间只能精确到10毫秒,所以理论上有可能存在10毫秒误差。
      经测试,当延迟时间大于500毫秒时,上面的延迟程序一般不存在误差。当延迟时间小于500毫秒时,可能有几十毫秒误差,为什么?因为延迟程序本身也是有运行时间的,同时系统时间只能精确到10毫秒

TOP

回复 4楼 的帖子

呵呵,这个倒没想过,因为在网吧.说实话也不懂.本人一直以来都用CHOICE和ping来延时的.2L仅是一个思路,至于延时么,我都不用(关键太长,写起来很麻烦)

TOP

返回列表