从 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
我正在扩展我之前的一个
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