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地址
问:解释命令中的每个单词。
答案 0 :(得分:3)
这个命令什么都不做,但我假设你实际上意味着以下内容:
FOR /L %x in (1,1,255) do ping -n 1 192.168.1.%x | find /I "reply"
让我们逐一剖析:
for
是一个可以以各种方式循环的命令/L
表示我们对计数循环感兴趣,例如就像许多编程语言中的for
命令一样。%x
是循环变量。批处理文件中的循环变量与环境变量不同,因此也有不同的语法。in
只是始终与for
一起使用的语法。接下来是一个带括号的表达式,它进一步阐明了循环的内容。(1,1,255)
是循环边界。从1
开始,每次迭代增加1
,然后使用255
停止。do
只是for
循环中始终存在的另一种语法。接下来是执行每次迭代的命令。ping
是一个命令,它将ICMP PING数据包发送到其他主机以查看它们是否响应。-n 1
仅用于ping每个主机一次。192.168.1.%x
是要ping的主机的IP地址。最后一个八位字节由循环变量替换,我们记得,循环变量从1
变为255
。|
是竖条字符,或者来自shell中的管道,通常称为“管道”(即使我说,J看起来更像是管道,通常)。这用于将左侧命令的输出作为输入传递给右侧的命令。find
,这是一个古老的,古老的程序,用于搜索文件和程序输出中的文本并返回这些行。 (说真的:现在使用findstr
,除非你在计算行数。/I
表示我们搜索不区分大小写。"reply"
是我们搜索的字词。总而言之,这是一行ping 192.168.1.0/24子网中的每个IP地址(甚至广播地址)并仅打印回复。在PowerShell中,我们可以通过
实现相同的目标Test-Connection (1..255|%{"192.168.1.$_"}) -Count 1 -ErrorAction SilentlyContinue
(这只是对ping
的一次调用,其中有许多地址实际上是并行执行的。)