在windows命令行批量ping局域網內IP

參考了博客園Alfred Zhao的文章《Windows平臺ping測試局域網全部在用IPhtml

在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文本文件

 

 

 

說的有點亂,其實就是想記一下筆記。

後來發現其實有現成工具能夠作這個事情:

QuickPing 0.8.exe

相關文章
相關標籤/搜索