在批处理中使用ping localhost

时间:2017-05-24 08:24:22

标签: batch-file

我们使用ping localhost -n 2 >nul来延迟其后续执行。 我们可以将2更改为所需的秒数。

我如何以更广泛的方式控制它?我尝试使用1.5代替2,但它没有用。

我们可以通过哪些代码更改时间单位吗?

编辑:而不是ping localhost -n 2 >nul。我使用TIMEOUT 1 >nul

3 个答案:

答案 0 :(得分:2)

Unfourtanelty,@ thx1138v2的解决方案仅在我的机器上延迟0.04秒。因此,我修改了他的解决方案,使其更加准确。

ping 1.1.1.1 -n 1 -w 1500 >nul

1500代表1500 milliseconds,即1.5 seconds

在ping少量时间

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