2015-07-12 55 views
0
C:\>FOR /L %x in (1,1,255) do ping -n 1 192.168.1.%x | find /I "reply" 

該命令從192.168.1 ping請求發送到所有IP地址%×(0,255)CMD ipscanner的解釋?

Q之間的範圍:在該命令的每一個字的解釋。

+0

請參閱'for /?','ping /?'和'find /?'。在你的命令中也有一些錯誤:a)搜索'reply'並不可靠。改用'TTL'。 b)逗號或空格,而不是'(1.1.255)'中的點c)管道符號是'|',而不是'/'。結果:'FOR/L%x在(1,1,255)中執行ping -n 1 192.168.1。%x | find「TTL」' – Stephan

+0

@Stephan,我願意說即使TTL不能可靠工作在每一種語言。 – Joey

+0

@Joey看來,「TTL」起作用是常識。你有沒有一個例子? – Stephan

回答

3

該命令不做任何事,但我會假設你實際上意味着以下幾點:

FOR /L %x in (1,1,255) do ping -n 1 192.168.1.%x | find /I "reply" 

讓我們來剖析一個一個:

  1. for是一個命令可以做循環在各種方式
  2. /L意味着我們有興趣在計數循環,例如如許多編程語言中的for命令。
  3. %x是循環變量。批處理文件中的循環變量與環境變量不同,因此語法也不同。
  4. in只是總是for一起使用的一種語法。接下來是一個加括號的表達式,進一步闡明瞭什麼是循環的。
  5. (1,1,255)是循環邊界。從1開始,每次迭代增加1,並以255停止。
  6. do只是在for循環中總是存在的另一種語法。緊隨其後的是執行每次迭代的命令。
  7. ping是向其他主機發送ICMP PING數據包以查看它們是否響應的命令。
  8. -n 1僅用於ping每個主機一次。
  9. 192.168.1.%x是要ping的主機的IP地址。最後一個八位字節被循環變量取代,我們記得,它從1變爲255
  10. |是垂直欄字符,或者來自shell中的管道,通常稱爲「管道」(即使我會說,J看起來更像是一個管道)。這用於將左側命令的輸出作爲輸入傳遞給右側的命令。
  11. 在這種情況下,右側的命令是find,這是一個古老的古老程序,用於搜索文件和程序輸出中的文本並返回這些行。 (認真:使用findstr如今,除非你計數線
  12. /I意味着我們搜索不區分大小寫
  13. "reply"是我們搜索的單詞

全部放在一起,這是。在192.168.1.0/24子網和只打印的答覆坪每一個IP地址(甚至是廣播地址)的線。在PowerShell中的術語,我們可以達到同樣的用

Test-Connection (1..255|%{"192.168.1.$_"}) -Count 1 -ErrorAction SilentlyContinue 

(這大約是剛上e致電ping與許多地址實際上ping平行)。

+0

很好的答案,謝謝。 –