|
在用 ping 命令做延迟时,是以 1 秒为单位的,有时你可能需要更小精度的时间延迟,下面代码可以实现这个要求。
需要注意的是,底下代码的精确度为 10ms (Windows 系统时间只能精确到 10ms,所以理论上有可能存在 10ms 误差)。
- @echo off
- set /p delay=请输入需延迟的毫秒数:
- set TotalTime=0
- ::读取起始时间,时间格式为:13:01:05.95,95 是 950ms
- set NowTime=%time%
- :delay_continue
- ::读取起始时间的分钟数
- set /a minute1=1%NowTime:~3,2%-100
- ::将起始时间的秒数转为毫秒
- set /a second1=1%NowTime:~-5,2%%NowTime:~-2%0-100000
- set NowTime=%time%
- ::读取现在时间的分钟数
- set /a minute2=1%NowTime:~3,2%-100
- ::将现在时间的秒数转为毫秒
- set /a second2=1%NowTime:~-5,2%%NowTime:~-2%0-100000
- ::+60表示新的时间可能已经越过12点处
- set /a TotalTime+=(%minute2%-%minute1%+60)%%60*60000+%second2%-%second1%
- if %TotalTime% lss %delay% goto delay_continue
- echo 程序结束时间:%time%
- echo 设定延迟时间:%delay%毫秒
- echo 实际延迟时间:%TotalTime%毫秒
- pause
复制代码
|
|