CMD ipscanner解释?

CMD ipscanner explanation?

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

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

问:命令中每个字的解释。

这个命令什么都不做,但我假设你的意思是:

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

我们来一一剖析:

  1. for是一个可以以多种方式循环的命令
  2. /L 表示我们对 counted 循环感兴趣,例如就像许多编程语言中的 for 命令。
  3. %x 是循环变量。批处理文件中的循环变量与环境变量不同,因此语法也不同。
  4. in 只是 总是 for 一起使用的一段语法。它后面是一个带括号的表达式,进一步阐明了循环的内容。
  5. (1,1,255) 是循环边界。从 1 开始,每次迭代递增 1,并以 255.
  6. 结束
  7. do 只是 for 循环中始终存在的另一种语法。其后是执行每次迭代的命令。
  8. ping是向其他主机发送ICMP PING包,看对方是否响应的命令。
  9. -n 1 只对每个主机 ping 一次。
  10. 192.168.1.%x是要ping的主机IP地址。最后一个八位字节被循环变量替换,我们记得,循环变量从 1255.
  11. | 是竖线字符,或者来自 shell 中的管道,通常称为“管道”(尽管我会说,通常 J 看起来更像管道)。这用于将左侧命令的输出作为右侧命令的输入传递。
  12. 在这种情况下,右边的命令是 find,这是一个古老的古老程序,用于在文件和程序输出中搜索文本以及 returns 那些行。 (严肃地说:现在使用 findstr,除非你在计算行数。
  13. /I表示我们不区分大小写搜索。
  14. "reply"是我们要搜索的词。

将所有内容放在一起,这是对 192.168.1.0/24 子网中的每个 IP 地址(甚至广播地址)执行 ping 命令并仅打印回复的行。在 PowerShell 术语中,我们可以使用

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

(这大约只是对 ping 的一次调用,其中包含许多实际上并行 ping 的地址。