@Tanckom; рассмотрите возможность принятия вами текущего ответа на вопрос, который я предоставил выше; Спасибо.

тоящее время мне трудно понять, как получить имена активных интерфейсов в качестве выходных переменных, которые впоследствии можно будет использовать в коде. Я читаюВот немного, как использовать вывод cmd в качестве переменной, но мне нужны конкретные имена, которые являются активными.

Мой текущий код:

    @echo off

    netsh interface show interface


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

Который отображает это изображение:Мы можем видеть, что из-за

netsh interface show interface

, показаны два подключенных интерфейса и два не подключенных. Тем не менее, как я могу получить f.ex. Ethernet 2 и WiFi как переменная только как %% V?

 Tanckom12 сент. 2017 г., 17:36
@Stephan, это очень полезно, но теперь показывает все 4 из них, где мне нужны только активные.
 Stephan12 сент. 2017 г., 17:29
FOR /F "skip=2 tokens=3,*" %%A IN ('netsh interface show interface') DO echo %%B
 Tanckom12 сент. 2017 г., 17:44
@ Стефан, нет. В результате из этого примера мне нужно получить переменные WiFi и Virtual Box.
 Magoo12 сент. 2017 г., 17:30
Прочитайте документацию дляfor команда -for /?|more из командной строки или посмотрите через SO тысячи примеров использованияfor.
 Stephan12 сент. 2017 г., 17:42
ТакEthernet 2 подключен? На скриншоте это выглядит очень похожеDisconnected... Пожалуйста, будьте точны, если хотите точных ответов.

Ответы на вопрос(2)

Потому что вывод 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%]=%*"
 Compo12 сент. 2017 г., 18:19
отредактировал это, извините.
 Stephan12 сент. 2017 г., 18:18
Опечатка. замещатьVAR[ с участиемNIC[
 Compo25 окт. 2017 г., 20:52
@Tanckom; рассмотрите возможность принятия вами текущего ответа на вопрос, который я предоставил выше; Спасибо.
 Tanckom12 сент. 2017 г., 18:14
Это дает мне вывод «Переменная среды VAR [не определено» ...?
Решение Вопроса

чтобы получить имена всех подключенных интерфейсов:

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 окончания строки

 Tanckom12 сент. 2017 г., 18:01
Спасибо, а также за заголовки языковой зависимости

Ваш ответ на вопрос