window bat脚本获取想要的物理网卡的真实IP地址

时间:2025-03-19 08:47:05

问题

电脑存在虚拟网卡以及真实的物理网卡,想使用bat脚本获取真正的物理网卡的IP地址

方案

可以使用wmic 如下命令各个网卡的IP地址,IPEnabled=TRUE,表示连接上网络的网卡

wmic nicconfig where "IPEnabled=TRUE" get IPAddress, MACAddress

会输出类似如下内容

IPAddress                                       MACAddress
{"192.168.3.1", "fe80::d056:77dd:7f50:34a"}     00:50:56:C0:00:08
{"192.168.3.210", "fe80::6528:6a39:aad3:2d6"}   F8:89:3C:26:E7:04
{"192.168.3.15", "fe80::93b:e641:c696:4e1f"}    4C:D5:77:08:C1:D3
{"192.168.111.1", "fe80::8145:4e81:4370:8565"}  00:50:56:C0:00:01

根据输出的内容信息,我们可以增加筛选条件,把电脑的物理网卡的MAC地址加入筛选逻辑,这样的话,就可以去除掉虚拟网卡,类似如下命令,我的有线网卡的mac地址是F8:89:3C:26:E7:04,无线网卡地址是:4C:D5:77:08:C1:D3,因此我可以通过如下命令进行筛选

wmic nicconfig where "IPEnabled=TRUE and MACAddress='F8:89:3C:26:E7:04' or  MACAddress='4C:D5:77:08:C1:D3'" get IPAddress, MACAddress

输出的内容如下,这就把我们的有线网卡以及无线网卡的IP地址筛选出来了

IPAddress                                      MACAddress
{"192.168.3.210", "fe80::6528:6a39:aad3:2d6"}  F8:89:3C:26:E7:04
{"192.168.3.15", "fe80::93b:e641:c696:4e1f"}   4C:D5:77:08:C1:D3

根据上面的逻辑,因此我们可以编写如下脚本进行真实的IP地址获取

@echo off
set str=IPAddress
for /F %%i in ('wmic nicconfig where "IPEnabled=TRUE and MACAddress="F8:89:3C:26:E7:04" or  MACAddress="4C:D5:77:08:C1:D3"" get IPAddress') do (
    if %%i == %str% (
    echo   _____   _____   _____   _   _____   _   _   __   _   _____  
    echo  /  ___^| ^| ____^| /  _  \ ^| ^| ^|  ___^| ^| ^| ^| ^| ^|  \ ^| ^| /  ___^| 
    echo  ^| ^|     ^| ^|__   ^| ^| ^| ^| ^| ^| ^| ^|__   ^| ^| ^| ^| ^|   \^| ^| ^| ^|     
    echo  ^| ^|     ^|  __^|  ^| ^| ^| ^| ^| ^| ^|  __^|  ^| ^| ^| ^| ^| ^|\   ^| ^| ^|  _  
    echo  ^| ^|___  ^| ^|___  ^| ^|_^| ^| ^| ^| ^| ^|     ^| ^|_^| ^| ^| ^| \  ^| ^| ^|_^| ^| 
    echo  \_____^| ^|_____^| \_____/ ^|_^| ^|_^|     \_____/ ^|_^|  \_^| \_____/ 
    echo. 		
    ) else (
        set commitid=%%i
        goto out
    )
)

:out
echo ip=%commitid:~2,-2%
echo. 		

注意:以上脚本只是筛选了第一个网卡,如果需要两个网卡地址都获取的话,自行按照筛选逻辑进行脚本编写即可