如何解决尝试使用 Batch 阵列 ping 一些设备无法正确解析
我正在尝试制作一个批处理文件来快速 ping 多个设备,以确保它们都仍在网络上。如果我手动输入命令,它似乎会给出预期的输出一次,但似乎不会遍历其他迭代。将它们放在批处理文件中并以某种方式运行它会干扰我调用变量的能力。 IP 只是作为“i”出现
有什么我遗漏的吗?感谢您的帮助。
set Device[0].Name=PC1
Set Device[0].IP=192.168.1.1
set Device[1].Name=PC2
Set Device[1].IP=192.168.1.2
set Device[2].Name=PC3
Set Device[2].IP=192.168.1.3
set _filepath=%userprofile%
echo %date% %time% > %_filepath%
SET /A i=0
:loop
IF %i%==3 GOTO END
call ping -n 1 %IDF[%i%].IP% | find "TTL=" >nul
if errorlevel 1 (
call echo %IDF[%i%].Name% IS OFFLINE >> %_filepath%
) else (
call echo %IDF[%i%].Name% Online >> %_filepath%
)
SET /A i=%i%+1
GOTO :loop
:END
解决方法
代替 set /a i=0
,
for /L %%s in (0,1,2) do (
CALL ping -n 1 %%Device[%%s].IP%% | find "TTL=" >nul
if errorlevel 1 (
CALL echo %%Device[%%s].Name%% IS OFFLINE >> %_filepath%
) else (
CALL echo %%Device[%%s].Name%% Online >> %_filepath%
)
)
然后可以轻松更改 for /L (start,step,end)
命令以处理扩展列表,而无需使用 goto
注意到我严重怀疑您的 _filepath
设置,因为它似乎被分配了目录名,而不是文件名
此外,使用 set "var1=data"
设置值 - 这可以避免由尾随空格引起的问题。在比较中,使用 if "thing1" == "thing2" ...
可以避免 thing1/2
中的空格引起的问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。