2012-12-04 51 views
39

是否有可能在CMD線檢查所有的網絡地址(ping或類似),看看哪些是採取/窗口具有有源器件:平在網絡中的所有地址,窗戶

即。這樣做的東西,如下所示:

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

這顯然是僞代碼。我想知道是否有可能在Windows cmd中做這樣的事情。如果你不需要一個批處理文件,那會很好,但是我明白這是不可能的。

PS。另外請提及是否有一個程序來做到這一點,但它可以很好地在cmd中完成。

+3

我沒有知識,只是想知道......會ping 192.168.1。255'獲得子網中所有設備的響應? – FrancescoMM

回答

86

打開命令提示符,然後鍵入以下內容:

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地址。

儘管完成時間還需要很長時間,但您也可以通過將-a添加到ping命令來將IP地址解析爲HOST名稱。

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

這是Here

希望這有助於

+0

很好的答案,但是,它目前打印出find參數不正確。我該如何解決這個問題? –

+0

嘗試將該命令粘貼到文本編輯器中,並刪除並重新添加引號。您複製的引號是一些HTML編碼的雙引號。 – RGG

+1

我已編輯帖子以修復這些智能引號。現在應該工作。 :-) – Mark

1

你所要做的只是看看計算機是否連接到網絡並收集他們的IP地址。您可以使用angryIP掃描器:http://angryip.org/查看特定子網或子網組上使用的IP地址。

我發現這個工具在嘗試查看哪些IP地址不在我的DHCP內部時非常有用。

+0

您提供的鏈接提供了404鏈接。http://www.angryip.org雖然工作正常,但不需要子路徑 – anurupr

4

這個帖子問了同樣的問題,但對於Linux的 - 你會發現它有幫助。 Send a ping to each IP on a subnet

nmap可能是使用的最佳工具,因爲它可以幫助識別主機操作系統並加快速度。它可用於nmap.org站點上的Windows平臺

+1

是的,我在Linux中做了很多次,但不是在Windows中。 –

+1

+1給nmap,很棒的工具! – logray

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 
+0

不好,認爲你的命令提示符有問題。 –

13

在速度方面的最佳工具是的Nmap

寫@命令提示符:

的Nmap -sn -oG ip.txt 192.168.1。1-255

這將只是ping通所有的IP地址在給定的範圍內,並將其存儲在簡單的文本文件

它只需秒掃描使用Nmap的主機。

+0

在我的機器上花費的時間略長於2秒(也許10?);然而,上面的批處理文件大約需要十分鐘,我需要運行很多範圍搜索,所以這對我來說是最好的路線。 – slim

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. 
+3

你能解釋一下你的代碼是做什麼的? – Math

+0

歡迎來到SO!正如數學所指出的,沒有一些背景下,你的答案並不是非常有用。請編輯您的答案以添加它所做的描述。 – Derek

25

我知道這是一個遲到的反應,但這樣做的一種巧妙的方法就是ping通其填充你的本地的ARP緩存廣播地址。

這可以通過運行arp -a來顯示,它將列出你本地arp表中的所有地址。

ping 192.168.1.255 
arp -a 

希望這是一個不錯的選擇,人們可以使用。

+0

我的設置'ping 192.168.1.255; arp -a'本身並沒有顯示動態ip,但是:'0..255 | ForEach-Object {ping 192.168.1。$ _}'後跟'arp ​​-a'(powershell)。 –

+0

請注意,並非所有設備都回復ping廣播地址 – Chriz

-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 
+2

任何解釋? – matsjoyce

0

擴大和有益的補充egmackenzie的 「ARP -a」 解決方案的Windows -

Windows爲例WiFi網絡上尋找我的iPhone

(前:iPhone的WiFi禁用)

  • Open Command Prompt in Admin mode(RC開始&看菜單)
  • arp -d < - 清除arp列表!
  • 平10.1.10.255 < - 把你的子網,並平 '255',大家
  • ARP -a
  • iPhone的WiFi上
  • 平10.1.10.255
  • ARP -a

例如見下文:

enter image description here

這裏是關於使用 'ARP -d' 在這裏如果有興趣的一個很好的書面記錄 -

1

提供窗戶框是在同一個子網:

用於/ L%一個在(1,1,254)就開始平192.168.0。%一

這將完成不到15秒,

ARP -a

將返回任何活着的主機。

我知道在windows中最快的原生方式。

+1

甚至更​​快:(for/L%a in(1,1,254)do @start/b ping 146.254.179。%a -w 100 -n 2> nul'。而你應該'arp ​​-d'才能刪除任何舊的條目來獲取活着的主機。 – Stephan

相關問題