Ping网络,窗口中的所有地址

Fan*_*Fox 50 windows cmd batch-file

是否可以在Windows cmd行中检查所有网络地址(使用ping或类似地址)以查看哪些网络地址/具有活动设备:

即.做类似以下事情的东西:

for i = 0 to 255
    ping 192.168.1.i //Print this
end
Run Code Online (Sandbox Code Playgroud)

这显然是伪代码.我想知道是否有可能在Windows cmd中做这样的事情.如果您不需要批处理文件会很棒,但我知道这是不可能的.

PS.另外请提一下是否有程序要做,但在cmd中这样做会很好.

RGG*_*RGG 107

打开命令提示符并键入以下内容:

FOR /L %i IN (1,1,254) DO ping -n 1 192.168.10.%i | FIND /i "Reply">>c:\ipaddresses.txt
Run Code Online (Sandbox Code Playgroud)

更改192.168.10以匹配您自己的网络.

通过使用-n 1,您只需要将1个数据包发送到每台计算机,而不是通常的4个数据包.

上面的命令将ping 192.168.10.0网络上的所有IP地址,并在C:\驱动器中创建一个名为ipaddresses.txt的文本文档.此文本文档应仅包含回复ping请求的IP地址.

虽然完成还需要相当长的时间,但您也可以通过在ping命令中添加-a来解析IP地址到HOST名称.

FOR /L %i IN (1,1,254) DO ping -a -n 1 192.168.10.%i | FIND /i "Reply">>c:\ipaddresses.txt
Run Code Online (Sandbox Code Playgroud)

这是来自这里

希望这可以帮助

  • 如果在批处理文件中使用它,则应使用`%% i`而不是`%i`. (3认同)
  • 请注意,根据您的 Windows 配置,非管理员用户可能无法写入 c:\ipaddresses.txt,请将路径更改为当前用户可写入的文件夹 (2认同)
  • 要提高此脚本的运行速度,请添加-w参数以设置相对较低的超时以等待每个答复。在我快速的本地网络上,我将此设置为10,这将运行脚本的时间缩短了不到一半。 (2认同)

Ed *_*zie 29

我知道这是一个迟到的响应,但这样做的一个简洁方法是ping广播地址,填充本地arp缓存.

然后可以通过运行arp -a来显示它,它将列出本地arp表中的所有地址.

ping 192.168.1.255
arp -a
Run Code Online (Sandbox Code Playgroud)

希望这是人们可以使用的一个很好的选择.

  • 请注意,并非所有设备都在广播地址上回复 ping (3认同)
  • 在我的设置`ping 192.168.1.255; arp -a` 单独没有显示动态 ip 而是:`0..255 | ForEach-Object {ping 192.168.1.$_}` 后跟 `arp ​​-a` did (powershell)。 (2认同)

小智 17

速度方面的最佳实用程序是Nmap.

写@cmd提示:

Nmap -sn -oG ip.txt 192.168.1.1-255

这只会ping给定范围内的所有ip地址,并将其存储在简单的文本文件中

使用Nmap 扫描255个主机只需2秒.


小智 9

如果 Windows 框在同一子网中:

for /L %a in (1,1,254) do start ping 192.168.0.%a
Run Code Online (Sandbox Code Playgroud)

这将在不到 15 秒内完成,并且

arp -a 
Run Code Online (Sandbox Code Playgroud)

将返回任何活着的主机。

我在 Windows 中所知道的最快的本地方式。

  • 甚至更快:`for /L %a in (1,1,254) do @start /b ping 146.254.179.%a -w 100 -n 2 >nul`。并且您应该在删除任何旧条目之前使用 `arp ​​-d` 来获取活动主机。 (4认同)

小智 5

这篇文章提出了同样的问题,但是对于linux - 你可能会觉得它很有帮助. 发送ping到子网上的每个IP

nmap可能是最好的工具,因为它可以帮助识别主机操作系统以及更快.它适用于nmap.org网站上的Windows平台