是否可以使用批处理文件来 ping 多个 IP 地址,每个 IP 地址都在自己的窗口中?

是否可以使用批处理文件来 ping 多个 IP 地址,每个 IP 地址都在自己的窗口中?

我可以创建一个批处理文件来 ping 多个 IP 地址吗?每个 IP 地址都在新窗口中。我不想打开多个窗口并手动编写每个 ping 命令。

例如:ping 192.168.1.1 -t在一个窗口和ping 192.168.2.1 -t另一个窗口。

答案1

这很简单,将以下内容保存到 [.bat] 文件中:

@echo off
rem start two new ping command windows from a batch file:
START cmd /k ping 8.8.8.8 /t
START cmd /k ping 127.0.0.1 /t

这将打开两个新的命令窗口,每个窗口都会连续 ping 两个不同的 IP 地址 [8.8.8.8 && 127.0.0.1]

答案2

您可以通过这种方式 ping 多个 IP 地址:

for /L %z in (1,1,254) do @ping 192.168.%z -w 10 -n 1 | find "Reply"

更改命令后的 IP 地址ping以反映您的网络 IP 范围。上述命令将 ping 192.168.1.1 和 192.168.1.254 之间的每个地址,并返回 IP 地址以回复 ping。

-w 10使得它只需等待 10 毫秒即可获得回复,然后继续。如果您的网络很慢,则必须提高此值或将其完全删除。

关于 Greensonline 的回答,是的,我忘记了最后一个八位字节。这是我的错误。

但是第二个 % 符号在 Windows 10/11 命令行中不起作用。此时出现 %%z 错误是意料之外的。

答案3

您可以使用该start命令。

例如,要 ping 您提供的两个地址:

start ping 192.168.1.1 -t
start ping 192.168.2.1 -t

答案4

作为Brian 的回答,以便在批处理文件,而不是命令行,则需要将 转义%,并附加%,如下所示:

for /L %%z in (1,1,254) do @ping 192.168.1.%%z -w 10 -n 1 | find "Reply"

为什么你需要逃避的解释%是这样的,cmd 文件中 % 和 %% 有什么区别?

  1. 百分号在批处理文件中用于表示命令行参数:%1,%2,...

  2. 两个百分号及其之间的任意字符均被解释为变量:

     echo %myvar%
    
  3. 两个百分号之间没有任何内容(在批处理文件中),在命令中(不是批处理文件中)将被视为单个百分号:%%f

请注意 Brian 回答中的命令(截至编辑#2) 也缺少 IP 地址的第三个八位字节,应为:

192.168.1.%z

并不是

192.168.%z

相关内容