如何推fping.exe(或其他ping的Windows)终止第一个答复?

想要用任意数量的ICMP请求ping特定的主机,但也想ping程序在第一个回复(加速脚本)上终止。 内置的windows ping和其他我没有testing过的其他function都没有。 任何知道Windows平台程序与此能力? 我知道我可以使用“-n 1”参数来循环ping程序,但是每次循环运行时都会启动ping程序,在大量使用的情况下会导致不必要的系统负载。

你可以在PowerShell中做这样的事情,作为Test-Connection cmdlet作为ping的包装。

  param( [string]$Name = "8.8.8.8", [int]$count = 4 ) [bool]$Success = $false For ($i=0; $i -le $count; $i++) { $result = Test-Connection -ComputerName $Name -Count 1 -ErrorAction SilentlyContinue if ($result.StatusCode -eq 0) { $Success = $true $result break; } } Write-Output "Successful connection: $Success" 

testing连接总是使用一个单一的ping,我把一个循环,只要一个ping成功,我们打破了循环,理想的第一次ping之后,否则它尝试x次,如$ count 。

PowerShell不启动ping.exe可执行文件,它使用下面的networkingAPI,因此在加载时可能会更好一些。

检查-n 参数

-n Count:指定发送的Echo Request消息的个数。 默认值是4。

ping.exe -n 1应只发送一个Echo请求消息

如果你想加快速度,你也可以检查其他的参数,特别是timeout参数。