我们使用ping localhost -n 2 >nul
来延迟其后续执行。
我们可以将2
更改为所需的秒数。
我如何以更广泛的方式控制它?我尝试使用1.5
代替2
,但它没有用。
我们可以通过哪些代码更改时间单位吗?
编辑:而不是ping localhost -n 2 >nul
。我使用TIMEOUT 1 >nul
。
答案 0 :(得分:2)
Unfourtanelty,@ thx1138v2的解决方案仅在我的机器上延迟0.04秒。因此,我修改了他的解决方案,使其更加准确。
ping 1.1.1.1 -n 1 -w 1500 >nul
1500
代表1500 milliseconds
,即1.5 seconds
。
ping
不准确,请参阅此表:
Milliseconds In Code | Actual Waited Time
1500 | 1.24 seconds - 1240 milliseconds
1600 | 1.34 seconds - 1360 milliseconds
1700 | 1.52 seconds - 1520 milliseconds
正如您所看到的,1700 ms
的等待时间比1500 ms
精确得多,因此您可能需要考虑一些额外的毫秒数。
注意:ping
仅支持超过99毫秒的延迟
答案 1 :(得分:2)
我对其他人在这个问题上写的答案感到非常惊讶。
命令timeout是等待批处理文件中特定时间的最佳选择,该文件旨在在Windows 7及更高版本的Windows上执行。它支持用户使用任何键来中断超时,除了/NOBREAK
被指定为参数。它显示了一条带有秒倒计时的好消息,用户也告知用户如何打破超时。但它仅支持以秒为单位的超时值,而不是毫秒。
当访问Windows 2003资源工具包时,可以在Windows XP和更高版本的Windows上使用命令sleep,并将此小型可执行文件复制到运行批处理文件的所有计算机。但是,由于被 TIMEOUT 取代,并且默认情况下未安装在任何Windows计算机上,因此不推荐使用此可执行文件。
但对于所有Windows而言,一个不错的选择是使用命令ping来ping环回适配器或使用适当的选项值-n
和-w
来获取无法访问的IP地址延迟。
本地计算机的环回适配器的IP地址为127.0.0.1
,请参阅维基百科有关Reserved IP addresses的文章。 localhost
只是文件127.0.0.1
中Windows上定义的%SystemRoot%\system32\drivers\etc\hosts
的RFC定义别名。
127.0.0.1
的第一次ping总是立即成功。因此,使用命令 PING 和-n 1
作为选项只会产生大约一毫秒的延迟。
出于这个原因,使用 PING 作为ping 127.0.0.1
的延迟需要1
选项-n
的值{...}要发送的回应请求数。成功请求后 PING 等待大约1秒后再发出下一个请求。
因此,对于5
秒的延迟,6
个回应请求需要以下命令行:
%SystemRoot%\System32\ping.exe 127.0.0.1 -n 6 >nul
注1: Windows不是实时操作系统,因此时间不是100%准确,但对于批处理文件应该足够好。
选项-w
以毫秒为单位定义ping(Microsoft文档)等待请求回显的时间。它没有定义两个成功请求之间的时间。因此,此选项不能用于微调ping IP地址127.0.0.1
的延迟,因为此请求在不到1毫秒内成功,并且选项-w
的值无关紧要。
因此,对于毫秒而不是秒的延迟,必须ping一个绝对或至少很可能无法访问且未通过网络路由的IP地址,因为{{3}是私有网络地址}。
一个例子是:
%SystemRoot%\System32\ping.exe 168.192.255.253 -n 1 -w 1500
IPv4地址范围从168.192.0.0到192.168.255.255适用于专用网络。此网络中的最高地址192.168.255.255是广播地址,不用于设备。通常配置局域网广播地址减1的路由器,这意味着如果当前计算机是该专用网络的一部分,则可以将192.168.255.254分配给路由器。并且LAN中的其他设备通常从最低地址加1向上分配IPv4地址。因此,对于IPv4网络168.192.0.0/16,IP地址168.192.255.253很可能未分配给任何将响应 PING 的回应请求的设备。
嗯,毫秒延迟不是很准确,因为RFC 6761已在他的回答中写道 但是,执行批处理文件以确保等待1500毫秒真的很重要吗?
注2:如果运行批处理文件的计算机当前未连接到任何网络,则此方法不起作用。没有任何网络连接,每个echo请求总是立即终止, PING 输出每个echo请求的错误信息:
PING: transmit failed. General failure.
一般故障是目前没有网络连接,因此只有本地环回适配器的回应请求才能正常工作。
答案 2 :(得分:0)
-n是ping的(n)次,而不是等待的时间。你不能ping 1.5次。
-w是每次ping的(w)ait的时间,以毫秒为单位。暂停1.5秒将是
ping -n 3 -w 500
如果在运行批处理文件的计算机上设置了网站,ping将将其视为localhost,并且超时将不适用。超时仅适用于失败的请求。最好ping 0.0.0.1延迟。
ping -n 3 -w 500 0.0.0.1