曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 3348|回复: 0
打印 上一主题 下一主题

[实例.其它] 任意更小的时间延迟

[复制链接]

716

主题

734

帖子

2946

积分

超级版主

Rank: 9Rank: 9Rank: 9

积分
2946
跳转到指定楼层
楼主
发表于 2014-5-26 17:15:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在用 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
复制代码

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-6-18 01:49 , Processed in 0.075576 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表