參考了博客園Alfred Zhao的文章《Windows平臺ping測試局域網全部在用IP》html
在cmd命令行運行以下命令便可:工具
for /L %i in (10,1,80) do ping -n 1 -w 60 172.24.240.%i | find "回覆" >>pingall.txt
這一條命令是ping局域網內地址範圍在172.24.240.10~172.24.240.80的全部主機。ping的結果會輸出到執行命令的目錄裏面的pingAll.txt文件。測試
注意:運行結果是追加到pingAll.txt文件的,不會新創建pingAll.txt文件。ui
運行樣例以下:spa
本樣例ping局域網內IP地址段:172.24.240.10~172.24.240.15的全部主機。運行過程和結果以下圖所示。命令行
運行結束後,會在D盤根目錄生成pingAll.txt文件,文件內容以下:code
從運行結果看,172.24.240.14和172.24.240.15兩個ip的主機ping不通。htm
下面詳細解釋上面的這條命令:blog
用到了for、ping和find命令,而且把運行的結果輸出到文本。ip
for命令的詳細說明
(這裏刪除了本文不用的那一部分說明)
C:\Users\most>for /?
對一組文件中的每個文件執行某個特定命令。
FOR %variable IN (set) DO command [command-parameters] %variable 指定一個單一字母可替換的參數。 (set) 指定一個或一組文件。可使用通配符。 command 指定對每一個文件執行的命令。 command-parameters 爲特定命令指定參數或命令行開關。 在批處理程序中使用 FOR 命令時,指定變量請使用 %%variable 而不要用 %variable。變量名稱是區分大小寫的,因此 %i 不一樣於 %I.
若是啓用命令擴展,則會支持下列 FOR 命令的其餘格式:
……
FOR /L %variable IN (start,step,end) DO command [command-parameters]
該集表示以增量形式從開始到結束的一個數字序列。所以,(1,1,5)將產生序列
1 2 3 4 5,(5,-1,1)將產生序列(5 4 3 2 1)
……
ping命令
本文開頭那條命令用到了ping命令,而且含有參數-n 1,表示只發送一個數據包.
另外,ping命令還加了-w 60 參數表示超時時間60ms。
find命令
C:\Users\most>find /? 在文件中搜索字符串。
FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] "string" [[drive:][path]filename[ ...]]
/V 顯示全部未包含指定字符串的行。
/C 僅顯示包含字符串的行數。
/N 顯示行號。
/I 搜索字符串時忽略大小寫。
/OFF[LINE] 不要跳過具備脫機屬性集的文件。
"string" 指定要搜索的文本字符串。
[drive:][path]filename
指定要搜索的文件。
若是沒有指定路徑,FIND 將搜索在提示符處鍵入 的文本或者由另外一命令產生的文本。
C:\Users\most>
本文開頭那條命令裏面的find指令搜索的範圍是ping產生的文本。利用find搜索含有「回覆」這兩個字的字符串,並把搜索結果顯示出來。
顯示的搜索結果之因此被輸出到文本文件,是由於用了">>"符號。具體介紹看《將cmd中命令輸出保存爲TXT文本文件》
說的有點亂,其實就是想記一下筆記。
後來發現其實有現成工具能夠作這個事情: