为什么Windows上的TIMEOUT命令不是很准确?

时间:2015-12-27 12:36:40

标签: windows batch-file time

我编写了以下程序只是为了测试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%。

1 个答案:

答案 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感兴趣。