【问题标题】:Batch - Find network IP address of computer using computer name批处理 - 使用计算机名称查找计算机的网络 IP 地址
【发布时间】:2015-05-16 07:51:15
【问题描述】:

我是批处理脚本的初学者。我遇到的问题是,我可以通过 ping 其 IP 地址从 LAN 中检索计算机名称(请参见下面的代码)。但是,在使用计算机名称时,我正在努力寻找一种同样简单的方法来获取网络上计算机的 IP 地址。据我所知,ping 计算机名称仅提供 MAC ID,但没有 IP。

我需要这个函数的原因是我正在编写一个小批量脚本,它提示用户输入 IP 或计算机名称以用于消息传递 (msg.exe) 目的。后续配置(TTL 检查和注册表项更改)明确需要其中之一。

@echo off
for /f "tokens=1,2" %%a in ('ping -a 192.168.1.33  ^| find "Pinging"') do set compname=%%b >nul
echo Computer name is %compname%
echo.
pause

【问题讨论】:

  • 请立即弄清楚一件事:批处理脚本不是 MS-DOS。仅仅因为它们是黑色背景上的白色文本并不意味着它是 DOS。 DOS 已经好几代没有包含在 Windows 中了。批处理文件在命令解释器下运行。
  • 谢谢,我已经在这个错误的想法下苦苦挣扎了一段时间了。我已经相应地编辑了我的问题。我会在我的个人资料中这样做。
  • 这是一个常见的误解,所以不要难过。但它非常需要被打破。
  • 绝大多数的DOS命令也是批量存在的。 64 位操作系统无法使用debug 命令,并且批处理中有几个不在 DOS 中的新命令(例如,for 命令的各种标志),但总的来说它们'基本相同。
  • 另外,ping 不应该返回 MAC 地址。你确定它不仅仅是一个 IPv6 值吗?试试ping -4 看看是否会产生您想要的结果。

标签: batch-file ip computer-name


【解决方案1】:

感谢SomethingDark的解决方案:

@echo off
for /f "tokens=1,2 delims=[]" %%a in ('ping -4 COMPNAME  ^| find "Pinging"') do set ipaddress=%%b >nul
echo COMPNAME IP address is %ipaddress%
echo.
pause

事实上,通过向我展示选项:

 ping -4

通过以这种方式 ping 计算机名,我可以侥幸找到“TTL=”状态。因此我不再需要将计算机名转换为 IP 地址,这将使我的最终脚本更短。谢谢!

【讨论】:

  • 这也值得一提(对于像我这样的新手,可能会遇到类似的问题)。我发现通过在我的无线网络适配器设置(我连接到 LAN 的方式)中禁用 IPv6,我在 ping 计算机名称时不再获得 IPv6 地址,而是获得所需的 IPv4。
猜你喜欢
  • 1970-01-01
  • 2011-06-14
  • 2014-04-15
  • 1970-01-01
  • 2015-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-04
相关资源
最近更新 更多