从netsh中识别网卡名并做一些事情



我正在扩展我以前的一篇文章。

这样做的目的是仔细检查网络标签是否存在,如果是,脚本将继续应用IP详细信息,如果不是,那么我们需要检查devcon是否运行失败或虚拟网卡没有正确添加。

仅供参考:这是为了虚拟机迁移,一旦迁移没有网卡,我们运行devcon清除所有以前的适配器/硬件,并添加新的网卡,应该以正确的顺序(本地连接,本地连接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个新网卡中的任何一个丢失或命名不正确,将警告用户修复问题。

谢谢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

相关内容

  • 没有找到相关文章

最新更新