CMD ipscanner解释?

时间:2015-07-12 09:14:18

标签: cmd ip ping

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

此命令将ping请求发送到192.168.1。%x范围(0,255)之间的所有IP地址

问:解释命令中的每个单词。

1 个答案:

答案 0 :(得分: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"是我们搜索的字词。
  14. 总而言之,这是一行ping 192.168.1.0/24子网中的每个IP地址(甚至广播地址)并仅打印回复。在PowerShell中,我们可以通过

    实现相同的目标
    Test-Connection (1..255|%{"192.168.1.$_"}) -Count 1 -ErrorAction SilentlyContinue
    

    (这只是对ping的一次调用,其中有许多地址实际上是并行执行的。)