CMD/Batch获取活动接口名称作为变量
问题描述:
我目前很难弄清楚如何获取活动接口名称作为变量输出,以后可以在代码中使用。 我一直在阅读here一点,如何使用cmd输出作为变量,但我需要具体的名称是活动的。CMD/Batch获取活动接口名称作为变量
我当前的代码:
@echo off
netsh interface show interface
FOR /F "tokens=* USEBACKQ" %%F IN (`netsh interface show interface`) DO (
SET var=%%F
)
ECHO %var%
Pause
netsh接口显示接口
,两个连接接口和显示两个未连接。但是,我如何获得f.ex. 以太网2和WiFi作为变量只有%% V?
答
来获取连接的所有接口的名称:
FOR /F "tokens=3,*" %%A IN ('netsh interface show interface^|find "Connected"') DO echo %%B
注:这是依赖于语言。
对于与语言无关的溶液使用wmic
(这有它自己的陷阱和奇特):
for /f "tokens=2 delims==" %%a in ('wmic nic where (NetConnectionStatus^=2^) get name /value') do (
for /f "delims=" %%b in ("%%a") do echo %%b
)
内for
是处理难看wmic
行结尾
+0
谢谢,也是对语言依赖的负责人 – Tanckom
答
由于WMIC的输出具有'难看'<CR><CR><LF>
行结尾和NetConnectionID
的值往往会有不必要的尾随空格,我建议更像这样的方法来检索仅连接的网络适配器作为变量:
@Echo Off
Set "i=0"
For /F "Skip=1Delims=" %%A In (
'WMIC NIC Where "NetConnectionStatus=2" Get NetConnectionID'
) Do For /F "Delims=" %%B In ("%%A") Do Call :Sub %%B
Set NIC[
Timeout -1
Exit/B
:Sub
Set/A i+=1
Set "NIC[%i%]=%*"
'FOR/F “跳过= 2个令牌= 3,*” %% A IN( 'netsh接口显示接口')DO回波%% B' – Stephan
阅读了'for'命令的文档 - '为/ ?|更多',或者查看数以千计的如何使用'for'的示例。 – Magoo
@Stephan,这非常有用,但是现在显示了他们所有的4个,我只需要活动的。 – Tanckom