2017-09-12 84 views
1

我目前很難弄清楚如何獲取活動接口名稱作爲變量輸出,以後可以在代碼中使用。 我一直在閱讀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 

它顯示此圖像: enter image description here 我們可以看到,由於

netsh接口顯示接口

,兩個連接接口和顯示兩個未連接。但是,我如何獲得f.ex. 以太網2和WiFi作爲變量只有%% V?

+2

'FOR/F 「跳過= 2個令牌= 3,*」 %% A IN( 'netsh接口顯示接口')DO回波%% B' – Stephan

+0

閱讀了'for'命令的文檔 - '爲/ ?|更多',或者查看數以千計的如何使用'for'的示例。 – Magoo

+0

@Stephan,這非常有用,但是現在顯示了他們所有的4個,我只需要活動的。 – Tanckom

回答

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

+0

謝謝,也是對語言依賴的負責人 – Tanckom

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%]=%*" 
+0

這給了我一個「環境變量VAR [未定義的輸出...? – Tanckom

+0

錯字。使用'NIC'替換'VAR [''' – Stephan

+0

編輯它,對不起。 – Compo