C:\>FOR /L %x in (1,1,255) do ping -n 1 192.168.1.%x | find /I "reply"此命令将ping请求发送到192.168.1.%x之间的所有ip地址(0,255)
问:对命令中的每一个字进行解释。
发布于 2015-07-12 09:36:42
这个命令什么也不做,但我假设您实际上是指以下内容:
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只用于敲击每个主机一次。192.168.1.%x是主机到ping的IP地址。最后一个八进制被循环变量替换,我们记得,循环变量从1到255。|是垂直的条形字符,或者,从shell中的管道来看,通常称为“管道”(尽管我会说,J看起来更像管道)。这用于将左边的命令输出作为右侧命令的输入传递。find,它是一个古老的、古老的程序,用于搜索文件和程序输出中的文本并返回这些行。(认真地说:现在使用findstr,除非你在数行。/I意味着我们不敏感地搜索案件。"reply"是我们搜索的单词。综合起来,这是一个行,它将192.168.1.0/24子网中的每个IP地址(甚至广播地址)都按下,并只打印回复。在PowerShell术语中,我们可以通过
Test-Connection (1..255|%{"192.168.1.$_"}) -Count 1 -ErrorAction SilentlyContinue(这大约是对ping的一个调用,其中有很多地址实际上是并行的)。
https://stackoverflow.com/questions/31366198
复制相似问题