首页 > 解决方案 > 使用 wmic 仅查找以太网 MAC 地址

问题描述

Win32_NetworkAdapter仅用于查找以太网 MAC 地址,但由于某种原因,它也像802.3在我的笔记本电脑/PC 中一样向我报告 WIFI。

你能告诉我我应该怎么做才能只找到以太网 MAC 地址。我想使用批处理文件查找多个以太网 MAC 地址

@echo off
setlocal EnableDelayedExpansion
setx /M PATH "%%PATH%%;C:\Windows\System32\wbem"
wmic path Win32_NetworkAdapter where "PNPDeviceID like '%%PCI%%' AND NetConnectionStatus=2 AND AdapterTypeID='0'" get name, MacAddress,AdapterType
pause

标签: batch-fileethernetmac-addresswmic

解决方案


我会建议如下编码的方法。

我不知道它有多准确(未经测试),但我确信它比我在任何地方看到的任何其他基于“批处理”的方法都不太可能识别蓝牙、MiniPort 或 WiFi 适配器。

@Echo Off
Set "MACs="
For /F "Skip=1 Delims=" %%A In ('
    "WMIC /NameSpace:\\root\WMI Path MSNdis_PhysicalMediumType Where (NdisPhysicalMediumType='0' Or NdisPhysicalMediumType='14') Get InstanceName 2>Nul"
') Do For /F "Tokens=*" %%B In ("%%A") Do Call :Sub %%B
If Defined MACs Echo %MACs::=%|Clip
Exit /B

:Sub
For /F "Skip=1" %%C In ('
    "WMIC Path Win32_NetworkAdapter Where (AdapterTypeID='0' And Name='%*' And NetConnectionStatus='2' And PhysicalAdapter='True') Get MACAddress 2>Nul"
') Do For /F "Tokens=*" %%D In ("%%C") Do If Not Defined MACs (
    Set "MACs=%%D") Else Call Set "MACs=%%MACs%% %%D"

我在你的问题中NetConnectionStatus过滤了一个。2如果不可能同时连接多个以太网适配器,则应And NetConnectionStatus='2'从线路中删除11

注意:包含有毒字符的网络适配器名称可能会导致此代码失败。


推荐阅读