我可以创建一个批处理文件来 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,%2,...
两个百分号及其之间的任意字符均被解释为变量:
echo %myvar%
两个百分号之间没有任何内容(在批处理文件中),在命令中(不是批处理文件中)将被视为单个百分号:%%f
请注意 Brian 回答中的命令(截至编辑#2) 也缺少 IP 地址的第三个八位字节,应为:
192.168.1.%z
并不是
192.168.%z