曲径通幽论坛

标题: 任意更小的时间延迟 [打印本页]

作者: easy    时间: 2014-5-26 17:15
标题: 任意更小的时间延迟
在用 ping 命令做延迟时,是以 1 秒为单位的,有时你可能需要更小精度的时间延迟,下面代码可以实现这个要求。

需要注意的是,底下代码的精确度为 10ms (Windows 系统时间只能精确到 10ms,所以理论上有可能存在 10ms 误差)。

  1. @echo off

  2. set /p delay=请输入需延迟的毫秒数:

  3. set TotalTime=0

  4. ::读取起始时间,时间格式为:13:01:05.95,95 是 950ms
  5. set NowTime=%time%


  6. :delay_continue

  7. ::读取起始时间的分钟数
  8. set /a minute1=1%NowTime:~3,2%-100


  9. ::将起始时间的秒数转为毫秒
  10. set /a second1=1%NowTime:~-5,2%%NowTime:~-2%0-100000

  11. set NowTime=%time%

  12. ::读取现在时间的分钟数
  13. set /a minute2=1%NowTime:~3,2%-100

  14. ::将现在时间的秒数转为毫秒
  15. set /a second2=1%NowTime:~-5,2%%NowTime:~-2%0-100000

  16. ::+60表示新的时间可能已经越过12点处
  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
复制代码






欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2