CMD / Batch将活动接口名称作为变量

时间:2017-09-12 15:23:39

标签: batch-file variables cmd connection

我目前很难弄清楚如何将活动接口名称作为变量输出,以后可以在代码中使用。 我一直在阅读here,如何使用cmd输出作为变量,但我需要有效的特定名称。

我目前的代码:

    @echo off

    netsh interface show interface


    FOR /F "tokens=* USEBACKQ" %%F IN (`netsh interface show interface`) DO (
    SET var=%%F
    )
    ECHO %var%
    Pause

显示此图片: enter image description here 我们可以看到由于

  

netsh界面show interface

,显示了两个连接的接口和两个未连接的接口。但是,我怎么得到f.ex. 以太网2和WiFi作为变量只有%% V?

2 个答案:

答案 0 :(得分:1)

获取所有连接接口的名称:

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行结尾

答案 1 :(得分:0)

因为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%]=%*"