从 netsh 识别 NIC 名称并做一些事情

Identify NIC Name from netsh and do something

我正在扩展我之前的一个

Objective 因为这是为了仔细检查网络标签是否存在,如果存在,脚本将继续应用 IP 详细信息,如果不存在,那么我们需要检查 devcon 是否未能 运行 或未正确添加虚拟网卡。

仅供参考:这是用于虚拟机迁移,迁移后没有网卡,我们 运行 devcon 清除所有以前的 adapters/hardware 并添加应该在正确的顺序(本地连接、本地连接 2 和本地连接 3)但是因为 windows 情况并非总是如此 :( 所以需要进行一些完整性检查。

目前我的情况如下

SET NICNaming=OTHER
FOR /F "Tokens=2 Delims=[]" %%a IN ('VER') DO SET _VerNo=%%a
FOR /F "Tokens=2-3 Delims=. " %%b IN ("%_VerNo%") DO (
    IF "%%b.%%c" LEQ  "6.1" SET NICNaming=Local Area Connection
    IF "%%b.%%c" GEQ  "6.2" SET NICNaming=Ethernet

)

for /f "skip=2 tokens=3*" %%A in ('netsh interface show interface') do (

IF "%%B" EQU "%NICNaming%" (ECHO %NICNaming% FOUND!) ELSE (ECHO %NICNaming% MISSING!)
IF "%%B" EQU "%NICNaming% 2" (ECHO %NICNaming% 2 FOUND!) ELSE (ECHO %NICNaming% 2 MISSING!)
IF "%%B" EQU "%NICNaming% 3" (ECHO %NICNaming% 3 FOUND!) ELSE (ECHO %NICNaming% 3 MISSING!)
)

它的输出有点正确,但正在加倍信息,就像这样 - 知道为什么吗?

Local Area Connection MISSING!
Local Area Connection 2 FOUND!
Local Area Connection 3 MISSING!
Local Area Connection MISSING!
Local Area Connection 2 MISSING!
Local Area Connection 3 MISSING!

理想情况下,一旦它正常运行并且如果添加的 3 个新 NIC 中的任何一个丢失或未正确命名,系统将警告用户让他们修复问题。

谢谢 B

编辑:Wox 的响应修复了问题 - 下面的正确代码!

SET NICNaming=OTHER
FOR /F "Tokens=2 Delims=[]" %%a IN ('VER') DO SET _VerNo=%%a
FOR /F "Tokens=2-3 Delims=. " %%b IN ("%_VerNo%") DO (
    IF "%%b.%%c" LEQ  "6.1" SET NICNaming=Local Area Connection
    IF "%%b.%%c" GEQ  "6.2" SET NICNaming=Ethernet

)

for /f "skip=2 tokens=3*" %%A in ('netsh interface show interface') do (

IF "%%B" EQU "%NICNaming%" (ECHO %NICNaming% FOUND!) ELSE (ECHO %NICNaming% MISSING!)
IF "%%B" EQU "%NICNaming% 2" (ECHO %NICNaming% 2 FOUND!) ELSE (ECHO %NICNaming% 2 MISSING!)
IF "%%B" EQU "%NICNaming% 3" (ECHO %NICNaming% 3 FOUND!) ELSE (ECHO %NICNaming% 3 MISSING!)
Goto Done
)
:Done

显然netsh interface show interface显示了两行,所以最后一个循环执行了两次。

一次迭代后跳出循环:

for ......... (
    ..........
    goto done
)
:done