`cmd.exe` 命令用于 ping 一系列地址

`cmd.exe` 命令用于 ping 一系列地址

我如何 ping 以 A 开头并以 B 结尾的一系列地址?

答案1

您可以使用for循环一次 ping 每个 IP 地址,但这是极其缓慢

for /l %i in (1,1,255) do ping -n 1 192.168.0.%i | find /i "Reply"

答案2

以下是如何使用 100ms 超时和更整洁的输出来实现此目的:

FOR /L %i IN (1,1,254) DO @ping -n 1 -w 100 192.168.1.%i | FIND /i "TTL"

答案3

为了加快上面公认的缓慢的回答,并假设您寻找的节点位于局域网或快速广域网上,请为 ping 添加超时时间(此处为 20 毫秒):

for /l %i in (1,1,255) do ping -w 20 -n 1 192.168.0.%i | find /i "Reply"

如果您没有合适的实用程序并且没有端口或想要进行广泛的端口扫描,或者客户端没有监听任何端口,这将很有用。

答案4

让我们更好地理解这个命令以及它的实际工作原理。该命令

for /l %i in (1,1,255) do ping -n 1 192.168.0.%i | find /i "Reply"

说的是:从 1 开始循环 ping,每次都往上数 1,直到达到 255,同时在指定的网络 192.168.0.XXX 上仅等待 1 个响应。

指定从 A 到 B 位于命令的 (1,1,255) 部分。由于 (x,y,z) x 代表您的 A 值(或范围的起点),y 代表查找下一个要尝试的值的计数量,z 代表 B 值(或范围的最大端)。

非常有用的命令,我的做法是将命令分为 3 个范围,打开 3 个命令提示符,并同时运行所有 3 个范围以加快进程并提高可读性。可读性是我最终开始使用 3 个范围的原因,因为运行全范围命令确实会产生结果,但向上滚动只能返回到这么远,因此它只在短范围内有用。

范围 1-80:

for /l %i in (1,1,80) do ping -n 1 192.168.0.%i | find /i "Reply" 

范围 81-165:

for /l %i in (81,1,165) do ping -n 1 192.168.0.%i | find /i "Reply"

范围 166 至 255:

for /l %i in (166,1,255) do ping -n 1 192.168.0.%i | find /i "Reply"

祝你好运并享受!

相关内容