cmd批处理获取网卡名称

最近遇到批处理获取网卡名称的需求,百度了很多没有特别合适的代码,学习了其他人的代码后自己综合了一下,分享出来。

讲下思路
网卡名称中有些是“本地连接”、“Ethernet0”这种没有空格的,有些是“本地连接 1”这种带空格的。
先用ipconfig /all |find “以太网适配器”获取各网卡信息。
在这里插入图片描述
不带空格的情况,取tokens=2*,即从左往右第2列的内容即可。
带空格时,需要将tokens=2和tokens=3的内容一起取下来。

所以先对tokens=3*表示从左往右第3列的值进行判断——
如果该值为空,则说明网卡名称不带空格,直接取netsh interface show interface^|more中第4列的值(set name=%%a)存为name。
如果该值不为空,则说明网卡名称带空格,netsh interface show interface^|more中第4列的值带空格(set name=%%a %%b)存为name。
在这里插入图片描述

最后echo name的值。
————————————————————————————————————————————————————
代码分界线
————————————————————————————————————————————————————

for /f "tokens=3*" %%t in ('ipconfig ^/all ^| find "以太网适配器"') do set name3=%%t

if "%name3%"=="" ( 

 for /f "tokens=4*" %%a in ('netsh interface show interface^|more') do (set name=%%a)

) else (

 for /f "tokens=4*" %%a in ('netsh interface show interface^|more') do (set name=%%a %%b)
)
echo %name%

————————————————————————————————————————————————————
代码分界线
————————————————————————————————————————————————————
适用情况:只有一个网卡。
多个网卡的没遇到,估计不适用,遇到再处理。
还有如果你安装了VMware的话,像VMware Network Adapter Vmnet1这样的超长名称,本脚本也不适用。

验证结果
只在win7和win10上做了验证。XP不知道是否适用。
win10如果提示命令行参数过多,需要对脚本每一条语句做验证,一般是多了个什么参数导致的,比如在show interface | more后面加了+2。这样的命令在win7上是ok的,win10上就会报错命令行参数过多。是我踩过的坑,也记录一下。
下面看结果。
不带空格的如下:
在这里插入图片描述

带空格的如下:
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章