58

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

IE。执行以下操作的操作:

for i = 0 to 255
    ping 192.168.1.i //Print this
end

这显然是伪代码。我想知道是否可以在 windows cmd 中执行类似的操作。如果您不需要批处理文件,那就太好了,但我知道这是否不可能。

PS。另外请提及是否有程序可以执行此操作,但最好在 cmd 中执行此操作。

4

11 回答 11

119

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

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

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

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

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

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

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

这是从这里

希望这可以帮助

于 2012-12-04T22:50:03.533 回答
34

我知道这是一个迟到的响应,但一个巧妙的方法是 ping 填充本地 arp 缓存的广播地址。

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

ping 192.168.1.255
arp -a

希望这是人们可以使用的一个不错的选择。

于 2014-05-27T15:42:45.637 回答
18

就速度而言,最佳实用程序是Nmap

写@cmd提示:

nmap -sn -oG ip.txt 192.168.1.1-255

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

使用 Nmap扫描255台主机仅需2秒。

于 2013-09-30T13:49:02.183 回答
9

如果 windows 框位于同一子网中:

for /L %a in (1,1,254) do start ping 192.168.0.%a

这将在 15 秒内完成,并且

arp -a 

将返回任何活着的主机。

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

于 2017-04-21T15:21:22.393 回答
5

这篇文章提出了同样的问题,但对于 linux - 您可能会发现它很有帮助。 向子网上的每个 IP 发送 ping

nmap 可能是最好的工具,因为它可以帮助识别主机操作系统并且速度更快。它可用于 nmap.org 站点上的 windows 平台

于 2012-12-04T22:54:20.567 回答
2

您要做的就是查看计算机是否连接到网络并收集它们的 IP 地址。您可以使用angeryIP 扫描器:http ://angryip.org/查看特定子网或子网组上正在使用的IP 地址。

在尝试查看正在使用的 IP 不在我的 DHCP 内时,我发现此工具非常有用。

于 2012-12-04T22:48:38.893 回答
2

egmackenzie 针对 Windows 的“arp -a”解决方案的扩展和有用的补充 -

在 WiFi 网络上搜索我的 iPhone 的 Windows 示例

(pre: iPhone WiFi 禁用)

  • 在管理员模式下打开命令提示符(RC 开始并查看菜单)
  • arp -d <- 清除 arp 列表!
  • ping 10.1.10.255 <- 使用您的子网,然后 ping '255',每个人
  • ARP -a
  • iPhone WiFi 开启
  • 平 10.1.10.255
  • ARP -a

请参见下面的示例:

在此处输入图像描述

如果有兴趣,这里有一篇关于使用 'arp -d' 的好文章——

于 2017-03-09T18:17:01.103 回答
1

在 Windows 8 上的批处理脚本中似乎有些事情发生了变化,而 DGG 上面的解决方案现在导致命令提示符崩溃。

以下解决方案对我有用:

@echo off
set /a n=0
:repeat
set /a n+=1
echo 192.168.1.%n%
ping -n 1 -w 500 192.168.1.%n% | FIND /i "Reply">>ipaddresses.txt
if %n% lss 254 goto repeat
type ipaddresses.txt
于 2013-09-11T19:05:08.580 回答
1

aping可以提供主机列表以及每个主机是否已响应 ping。

 aping -show all 192.168.1.*
于 2020-03-26T07:55:01.743 回答
0
@ECHO OFF

IF "%SUBNET%"=="" SET SUBNET=10

:ARGUMENTS
ECHO SUBNET=%SUBNET%
ECHO ARGUMENT %1 
IF "%1"=="SUM" GOTO SUM
IF "%1"=="SLOW" GOTO SLOW
IF "%1"=="ARP" GOTO ARP
IF "%1"=="FAST" GOTO FAST

REM PRINT ARP TABLE BY DEFAULT
:DEFAULT
ARP -a
GOTO END

REM METHOD 1 ADDRESS AT A TIME
:SLOW
ECHO START SCAN
ECHO %0 > ipaddresses.txt
DATE /T >> ipaddresses.txt
TIME /T >> ipaddresses.txt
FOR /L %%i IN (1,1,254) DO ping -a -n 2 192.168.%SUBNET%.%%i | FIND /i "TTL="  >> ipaddresses.txt
GOTO END

REM METHOD 2 MULTITASKING ALL ADDRESS AT SAME TIME
:FAST
ECHO START FAST SCANNING 192.168.%SUBNET%.X
set /a n=0
:FASTLOOP
set /a n+=1
ECHO 192.168.%SUBNET%.%n%
START CMD.exe /c call ipaddress.bat 192.168.%SUBNET%.%n% 
IF %n% lss 254 GOTO FASTLOOP
GOTO END

:SUM
ECHO START SUM
ECHO %0 > ipaddresses.txt
DATE /T >> ipaddresses.txt
TIME /T >> ipaddresses.txt
FOR /L %%i IN (1,1,254) DO TYPE ip192.168.%SUBNET%.%%i.txt | FIND /i "TTL=" >> ipaddresses.txt
FOR /L %%i IN (1,1,254) DO DEL ip192.168.%SUBNET%.%%i.txt
type ipaddresses.txt
GOTO END

:ARP
ARP -a >> ipaddresses.txt
type ipaddresses.txt
GOTO END


:END
ECHO DONE WITH IP SCANNING
ECHO OPTION "%0 SLOW" FOR SCANNING 1 AT A TIME
ECHO OPTION "%0 SUM" FOR COMBINE ALL TO FILE
ECHO OPTION "%0 ARP" FOR ADD ARP - IP LIST
ECHO PARAMETER "SET SUBNET=X" FOR SUBNET
ECHO.
于 2013-11-08T16:33:42.853 回答
-2
for /l %%a in (254, -1, 1) do ( 
    for /l %%b in (1, 1, 254) do (
        for %%c in (20, 168) do (
            for %%e in (172, 192) do (
                ping /n 1 %%e.%%c.%%b.%%a>>ping.txt
            )
        )
    )
)
pause>nul
于 2014-12-02T17:29:27.213 回答