Windows 只需知道MAC地址即可获得IP

Windows 只需知道MAC地址即可获得IP,windows,batch-file,networking,Windows,Batch File,Networking,我正试图写一个批处理文件,它给了我一个IP,但我只知道MAC地址 arp -a 不会为我工作,因为我以前从未ping过那个IP。我想在网络中搜索它,只知道MAC地址 信息:IP是静态的 编辑:刚刚意识到你在Windows上的位置。遗憾的是,在Windows中没有ping braodcast地址的本机方法,但是您可以使用以下技巧:FOR/L%i in(1,1255)do@ping-n 1 192.168.1.%i | find“Reply”。但它似乎非常慢 前面的答案如下 据我所知,你必须填写

我正试图写一个批处理文件,它给了我一个IP,但我只知道MAC地址

arp -a
不会为我工作,因为我以前从未ping过那个IP。我想在网络中搜索它,只知道MAC地址

信息:IP是静态的


编辑:刚刚意识到你在Windows上的位置。遗憾的是,在Windows中没有ping braodcast地址的本机方法,但是您可以使用以下技巧:
FOR/L%i in(1,1255)do@ping-n 1 192.168.1.%i | find“Reply”
。但它似乎非常慢

前面的答案如下


据我所知,你必须填写你的ARP缓存才能做你想做的事。
这就是你需要的

正如帖子所说,你可以:

  • 通过ping广播地址ping局域网的所有主机(
    ping-b-c192.168.1.255
    ,用实际广播地址替换IP)
  • fping您的整个网络(
    fping-a-g 192.168.1.0/24
    ,替换为实际的网络掩码)
  • 网络映射(
    nmap-sP 192.168.1.0/24
  • nbtscan(仅限windows主机,
    nbtscan 192.168.1.0/24
然后查找您的ARP缓存

for /f "skip=3 delims=\" %%A in ('net view ^| findstr /v /C:"The command completed successfully"') do Echo %%A >> "%userprofile%\desktop\computerlist.txt"
在计算机上打开的列表

 wmic /node:@computerlist.txt nicconfig where macaddress='whatever:whatever:etc' get ipaddress /format:htable
获取指定MAC地址的IP

 wmic /node:@computerlist.txt nicconfig get ipaddress /format:htable

获取计算机上所有mac地址的IP地址。

我不是批处理用户,因此我不知道这些命令,但我知道这样做的方法是向您的网络发送广播ping请求,并使用wireshark检查回复中的mac地址

我记得sachadee发布了这个代码ScanIP MAC.bat

@echo off
Title Scan for IP and MAC Adress on LAN
mode con cols=60 lines=20
Color A
set ip=192.168.1.1
set debut=1
set fin=10
if exist ping.txt  (del  ping.txt)
if exist ping2.txt (del  ping2.txt)
if exist ping3.txt (del  ping3.txt)
if exist ping4.txt (del  ping4.txt)
for /L %%i in (%debut%,1,%fin%) do (echo Recherche de la machine : %ip:~0,9%.%%i
    for /f "tokens=5 delims= " %%f in ('ping -4 -n 1 %ip:~0,9%.%%i ^|find /i "32"') do (echo %%f >> ping.txt
    )
        for /f "tokens=1 delims= " %%k in ('Type ping.txt ^|findstr /i "19"') do echo %%k > ping2.txt
            for /f %%l in (ping2.txt) do (arp -a %%l >> ping3.txt
        )
            )
Cmd /U /C Type ping3.txt > ping4.txt
Del ping.txt
Del ping2.txt
Del ping3.txt
Start ping4.txt

假设您的子网是192.168.1.xxx

@echo off
REM clear arp cache (optional):
arp -d
REM ask everybody on the subnet for a response:
for /l %%a in (1,1,255) do start /b ping -n 2 -w 500 192.168.1.%%a >nul
REM wait for the processes to finish:
timeout 2 >nul
REM show the responses (with IP and MAC):
arp -a
找到IP后,您可以尝试使用以下方法解析计算机名:

ping -a -n 1 192.168.1.xxx

Edit找到了一种加速的方法。

我不知道这是否是最终的解决方案。我希望明天能告诉你。但现在我有一个问题:第一个命令循环遍历所有内容并将其保存在.txt文档中。这样我就可以在arp表中循环了,还是不循环更好?为什么?不工作--第一个命令给出--
系统错误6118已发生。
此工作组的服务器列表当前不可用
--同时我的设备显示在
arp-a
中。。。。如果您不在24位子网上怎么办?