如何在 Windows 8.1 批处理脚本中检索以太网适配器名称
How to retrieve Ethernet adapter name in Windows 8.1 batch script
我希望从 ipconfig 中提取以太网适配器名称,以便在批处理脚本中使用,该脚本将使用 netsh 创建该适配器名称的静态 IP。
Ethernet adapter Ethernet0:
Connection-specific DNS Suffix . : foo.bar.com
IPv4 Address. . . . . . . . . . . : 10.0.0.123
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 10.0.0.456
我想做的是拔出 Ethernet0 并在以下 netsh 命令中使用它(net_city 和 net_lab 由用户输入)。
netsh interface ip set address "<adapter name>" static 10.%net_city%.15%net_lab%.235 255.255.255.0 10.%net_city%.15%net_lab%.1 1
检索姓名的最佳方法是什么?我已经开始研究正则表达式以尝试过滤掉名称。
谢谢!
为什么不用下面的,那就用this post到select正确的界面。
C:\Scripts>netsh interface show interface
Admin State State Type Interface Name
-------------------------------------------------------------------------
Enabled Connected Dedicated Local Area Connection
如前所述,您可以使用 netsh
收集接口列表,然后使用 choice
将用户引导至 select 一个。这是我的实现:
@echo off
setLocal enableDelayedExpansion
set c=0
set "choices="
echo Interfaces -
for /f "skip=2 tokens=3*" %%A in ('netsh interface show interface') do (
set /a c+=1
set int!c!=%%B
set choices=!choices!!c!
echo [!c!] %%B
)
choice /c !choices! /m "Select Interface: " /n
set interface=!int%errorlevel%!
echo %interface%
choice 命令更改 errorlevel
的值,通过使包含接口列表的每个变量的名称为 int1
、int2
等,您可以简单地调用它们在选择命令后加上 !int%errorlevel%!
。
如果您可以假设永远只有一个界面,那么您只需执行以下操作即可。
for /f "skip=2 tokens=3*" %%A in ('netsh interface show interface') do set interface=%%B
echo %interface%
for /f "skip=2 tokens=3*" %%A in ('netsh interface show interface') do set interface=%%B
netsh interface ip set address name=%interface% static 192.168.1.10 255.255.255.0 192.168.1.1
我希望从 ipconfig 中提取以太网适配器名称,以便在批处理脚本中使用,该脚本将使用 netsh 创建该适配器名称的静态 IP。
Ethernet adapter Ethernet0:
Connection-specific DNS Suffix . : foo.bar.com
IPv4 Address. . . . . . . . . . . : 10.0.0.123
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 10.0.0.456
我想做的是拔出 Ethernet0 并在以下 netsh 命令中使用它(net_city 和 net_lab 由用户输入)。
netsh interface ip set address "<adapter name>" static 10.%net_city%.15%net_lab%.235 255.255.255.0 10.%net_city%.15%net_lab%.1 1
检索姓名的最佳方法是什么?我已经开始研究正则表达式以尝试过滤掉名称。
谢谢!
为什么不用下面的,那就用this post到select正确的界面。
C:\Scripts>netsh interface show interface
Admin State State Type Interface Name
-------------------------------------------------------------------------
Enabled Connected Dedicated Local Area Connection
如前所述,您可以使用 netsh
收集接口列表,然后使用 choice
将用户引导至 select 一个。这是我的实现:
@echo off
setLocal enableDelayedExpansion
set c=0
set "choices="
echo Interfaces -
for /f "skip=2 tokens=3*" %%A in ('netsh interface show interface') do (
set /a c+=1
set int!c!=%%B
set choices=!choices!!c!
echo [!c!] %%B
)
choice /c !choices! /m "Select Interface: " /n
set interface=!int%errorlevel%!
echo %interface%
choice 命令更改 errorlevel
的值,通过使包含接口列表的每个变量的名称为 int1
、int2
等,您可以简单地调用它们在选择命令后加上 !int%errorlevel%!
。
如果您可以假设永远只有一个界面,那么您只需执行以下操作即可。
for /f "skip=2 tokens=3*" %%A in ('netsh interface show interface') do set interface=%%B
echo %interface%
for /f "skip=2 tokens=3*" %%A in ('netsh interface show interface') do set interface=%%B
netsh interface ip set address name=%interface% static 192.168.1.10 255.255.255.0 192.168.1.1