一、前言
在日常开发中,设备授权、局域网调试、软件绑定设备等场景,经常需要快速获取电脑网卡的MAC地址(物理地址)。本文整理了一份Windows CMD原生命令和Python最简获取MAC的代码,没有冗余,直接复制即可使用。
所有代码均为极简可用版本,适合快速集成、调试及项目部署。
二、CMD 命令获取 MAC 地址(无需任何软件)
Windows自带三条常用命令,可按需选择,输出干净且高效。
1、ipconfig 查看全部网卡信息(最常用)
完整查看网卡、IP、物理地址(MAC)、DNS等信息:
ipconfig /all

关键字段:物理地址 即为 MAC 地址。注意:必须输入 /all,直接输入 ipconfig 不会显示 MAC 地址。
精简输出(仅显示 MAC):
ipconfig /all | findstr "物理地址"

2、getmac 专属 MAC 查询命令
系统专用查看网卡物理地址的命令,输出简洁,无多余信息:
getmac

3、wmic 适合脚本批量读取 MAC
适用于批处理或程序调用,输出格式规整:
wmic nic where "MacAddress<>null" get MacAddress

三、Python 最简代码获取本机 MAC 地址
提供两套方案:纯标准库(无需安装依赖)、跨平台极简库方案。
1、纯 Python 标准库(Windows 专用、零依赖)
调用系统 cmd 解析 MAC,无需 pip 安装任何包:
import subprocess
import re
def get_mac_list():
res = subprocess.check_output("getmac /fo table /nh", encoding="gbk")
macs = re.findall(r"([0-9A-Fa-f]{2}[-][0-9A-Fa-f]{2}[-][0-9A-Fa-f]{2}[-][0-9A-Fa-f]{2}[-][0-9A-Fa-f]{2}[-][0-9A-Fa-f]{2})", res)
return list(set(macs))
if __name__ == "__main__":
print("本机MAC地址列表:")
print(get_mac_list())

2、跨平台通用方案(Windows / Linux / Mac)
适配全平台,仅需安装依赖:pip install netifaces
import netifaces
def get_mac_list():
macs = set()
for iface in netifaces.interfaces():
addrs = netifaces.ifaddresses(iface)
if netifaces.AF_LINK in addrs:
mac = addrs[netifaces.AF_LINK][0]['addr']
if mac != "00:00:00:00:00:00":
macs.add(mac)
return list(macs)
print(get_mac_list())

四、补充说明
Windows 下的 MAC 地址格式:XX-XX-XX-XX-XX-XX
Linux / Mac 下的 MAC 地址格式:XX:XX:XX:XX:XX:XX
结果中包含:有线网卡、WiFi、蓝牙、虚拟网卡、虚拟机网卡等物理地址。
纯标准库方案适合 Windows 项目打包发布,无额外依赖,避免报错。
五、总结
1. 手动查看 MAC:优先使用 getmac 命令,简洁高效;
2. 程序自动获取:Windows 环境下用标准库调用 cmd,跨平台场景推荐 netifaces;
3. 所有代码均为最简实现,可直接嵌入设备授权、日志采集、系统信息工具等场景。
