我编写了以下程序只是为了测试Windows批处理文件命令TIMEOUT,PAUSE和SLEEP的准确性:
STARTTIME: 17:52:00.84
ENDTIME: 17:52:10.15
STARTTIME: 6432084 centiseconds
ENDTIME: 6433015 centiseconds
DURATION: 931 in centiseconds
00:00:09,31
STARTTIME: 17:53:02.36
ENDTIME: 17:53:12.14
STARTTIME: 6438236 centiseconds
ENDTIME: 6439214 centiseconds
DURATION: 978 in centiseconds
00:00:09,78
STARTTIME: 17:55:22.14
ENDTIME: 17:55:32.16
STARTTIME: 6452214 centiseconds
ENDTIME: 6453216 centiseconds
DURATION: 1002 in centiseconds
00:00:10,02
STARTTIME: 17:55:38.49
ENDTIME: 17:55:48.11
STARTTIME: 6453849 centiseconds
ENDTIME: 6454811 centiseconds
DURATION: 962 in centiseconds
00:00:09,62
我在多次运行中获得了以下输出: STARTTIME:17:49:47.47 结束时间:17:49:57.17 STARTTIME:6418747厘秒 结束时间:6419717厘秒 持续时间:970厘秒 00:00:09,70
*
任何一个解释输出的变化都非常大,为什么持续时间不接近10?错误大约是4%。
答案 0 :(得分:3)
timeout
实际上并没有等待给定的时间,而是等待第二个滴答(或第二个倍数),也就是说,第一个滴答可能在命令运行时立即发生,或者可能持续一秒最多,取决于命令启动的时间点。
因此,例如,timeout /T 3
最多等待大于2秒和3秒的时间,因为第一个滴答发生>命令运行后0和< = 1s,剩余的2个滴答在每个另一个完整秒后发生。
要等待3s,请使用ping 127.0.0.1 -n 4
(4次尝试ping,每次间隔3次,每次1次)。
注意:强>
要更准确地测量命令的执行时间,您可能会对this method感兴趣。