繁体   English   中英

将名称添加到 IP 地址而不使批处理文件失败

[英]Adding names to an IP address without failing the batch file

我想使用批处理文件来 ping 一组服务器。 批处理文件工作并报告正常或失败。 我想要的只是让它在支票中显示服务器的名称。

这是我在批处理文件中使用的:

@echo off
for /f "delims=" %%a in (C:\List of IPs.txt) do ping -n 1 %%a >nul && (echo %%a ok) || (echo %%a failed to respond) 
pause

在它指向的文本文件中只是一个 IP 列表,我如何制作它以便我可以在 IP 旁边看到一个名称? 先感谢您!

只需插入另一个for /f循环来获取名称:

@echo off
SetLocal 
for /f "usebackq" %%a in ("List of IPs.txt") do (
  for /f %%b in ('"ping -n 1 %%a >nul && (echo ok) || (echo failed to respond) "') do (
    for /f "tokens=1*" %%m in ('nslookup %%a  ^|findstr /b "Name:"') do (
     echo %%a   %%n %%b
    )
  )
)

一种选择是将文件格式化为具有 IP 和您感兴趣的名称。

192.168.1.200 server1
192.168.1.201 server2
192.168.1.202 printer1
192.168.1.203 that one stupid printer in the back

然后你可以从文件中读取两者。 我要注意一件事——您检查 ping 的方法并不一致。 即使 ping 实际失败(来自“无法访问”的有效响应),您也可以获得错误级别 0。 相反(英文)成功的 ping 总是包含“ttl=”。 因此你会这样做:

未经测试

@echo off
for /f "usebackq tokens=1* delims= " %%a in ("C:\List of IPs.txt") do ping -n 1 %%a ^|find /i "ttl=" >nul && (echo %%b at %%a is ok) || (echo %%b at %%a failed to respond)
pause

如果您有 dns 可以处理您尝试访问的所有内容,则可以利用 nslookup 和/或 ping -a。

根据评论,我添加了以下解决方案,适用于我的英语 Windows 10 计算机,上面的文本文件:

@echo off
for /f "usebackq tokens=1* delims= " %%a in ("C:\temp\List of IPs.txt") do ping -n 1 -w 1500 %%a |find /i "ttl=" >nul &&echo %%b at %%a is ok||echo %%b at %%a failed to respond
pause

请注意,在delims= "处的等号和双引号之间有一个空格

Output:

server1 at 192.168.1.200 is ok
server2 at 192.168.1.201 is ok
printer1 at 192.168.1.202 is ok
that one stupid printer in the back at 192.168.1.203 failed to respond
Press any key to continue . . .

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM