【发布时间】:2015-09-14 20:00:32
【问题描述】:
我正在做一个学校项目,我想创建一个批处理文件来 ping 用户定义的 IP 范围并将成功的 ping 写入 txt 文件。
现在我被困在FOR 循环中:
@echo off
SET /p IPRange=Bitte IP-Range eingeben(xxx.xxx.xxx) :
SET /p AnfangsIP=Bitte AnfangsIP des Bereiches eingeben :
SET /p EndIP=Bitte EndIP des Bereiches eingeben :
FOR /L %IP% (%AnfangsIP%,1,%EndIP%) DO (
ping -n 1 %IP-Range%.%IP% | find "TTL=" >nul
if errorlevel 1 (
echo %IP-Range%.%IP% not reachable
) else (
echo %IP-Range%.%IP% reachable
)
)
pause>nul
批处理文件使用以下参数执行:IP 范围、起始 IP 地址、结束 IP 地址。我的目标是创建一个for 循环,在每个循环中增加变量%IP%。从start IP-address 到end IP-address。
我在论坛中搜索过,但只有单个 ping 不是针对整个 IP 范围的。
【问题讨论】:
-
延迟扩展问题。在括号内的代码块中,您需要延迟变量的扩展。否则,它们会保留循环开始时的任何值。此外,
for /L的语法是for /L %%X。这是双百分比,一个字母的变量。有关更多信息,请参阅 cmd 控制台中的help for。for /L %IP%不会工作。最后,for /L循环遍历 整数。它不能增加完全合格的 IP。但是,如果您愿意,它可以增加最后一个八位字节,但前提是您将其视为独立整数。 -
你好 wOxxxOm。谢谢你的协助。单字母变量对我有很大帮助:) 现在我将研究如何解决整数问题。必须有一种方法可以将 a 字符串导入 for 循环... :)
-
最好检查一下微软提供的portqry工具。
标签: batch-file for-loop ping