batch-file - 使用 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
解决方案
我会建议如下编码的方法。
我不知道它有多准确(未经测试),但我确信它比我在任何地方看到的任何其他基于“批处理”的方法都不太可能识别蓝牙、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
。
注意:包含有毒字符的网络适配器名称可能会导致此代码失败。
推荐阅读
- selenium-webdriver - testNG dataprivider 中的 Hashmap 以减少传递给测试方法的参数
- android - 如何在反应原生上下文中将环境变量传递给 Android 构建
- google-apps-script - 谷歌脚本 | 将超过一天的文件移动到另一个文件夹中
- java - 当在 TextField 内按下回车键时,JavaFX 程序切换全屏
- node.js - 节点 axios 不会将响应保存在变量中,但它会在控制台中打印它
- wordpress - Wordpress 中当前类别的子类别
- python - 我的 Heroku 应用程序似乎正在运行超过 1 个实例
- java - Java - 使用可选秒数解析日期
- node.js - 来自 Sequelize with Node.js 的问题 console.log() 对象
- java - 简化的 Java 路径查找