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上就會報錯命令行參數過多。是我踩過的坑,也記錄一下。
下面看結果。
不帶空格的如下:
在這裏插入圖片描述

帶空格的如下:
在這裏插入圖片描述

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