Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Windows 7 (http://forum.oszone.net/forumdisplay.php?f=95)
-   -   Определение "Подключение по локальной сети" на сетевом адаптере (http://forum.oszone.net/showthread.php?t=335606)

iAngeR 05-07-2018 16:26 2820732

Определение "Подключение по локальной сети" на сетевом адаптере
 
На клиентских ПК сетевые параметры прописываются статикой. В списке Сетевых подключений бывают виртуальные адаптеры (прим. Microsoft Video драйвер или сетевой интерфейс фискального регистратора). При работе скрипта параметры иногда прописываются в виртуальные адаптеры, а не в Подключение через сетевую карту. Подскажите, что нужно добавить? Использую скрипт
Скрытый текст
for /F "tokens=2 delims==" %%a in ('wmic path Win32_networkadapter where
^"NetConnectionStatus^=2^" get NetConnectionID /value') do set lanname=%%a
netsh interface ip set address name="%lanname%" static %ip% %mask% %gate% 1

Iska 05-07-2018 18:10 2820742

Цитата:

Цитата iAngeR
Подскажите, что нужно добавить? »

Надо добавить условие, которое однозначно позволит отличать одно:
Цитата:

Цитата iAngeR
Подключение через сетевую карту »

от прочих:
Цитата:

Цитата iAngeR
бывают виртуальные адаптеры (прим. Microsoft Video драйвер или сетевой интерфейс фискального регистратора). »


iAngeR 05-07-2018 23:36 2820787

Подскажите, где ошибка
Скрытый текст
for /F "tokens=2 delims==" %%a in ('wmic path Win32_networkadapter where "NetConnectionStatus=2 AND PNPDeviceID LIKE 'PCI\\VEN%'" GET NetConnectionID /VALUE') do set lanname=%%a

Iska 06-07-2018 09:01 2820815

iAngeR, как минимум — удвойте символ «%» в условии запроса при использовании внутри пакетного файла:
Код:

… LIKE 'PCI\\VEN%%'" …

YuS_2 06-07-2018 11:39 2820830

Цитата:

Цитата iAngeR
При работе скрипта параметры иногда прописываются в виртуальные адаптеры, а не в Подключение через сетевую карту. Подскажите, что нужно добавить? »

Так отделите физические адаптеры от виртуальных... вопрос только в том, сколько есть физ.адаптеров на машине. Если больше одного, тогда придется делать ветвление в коде или псевдомассив создавать, чтобы отобрать нужный. Если же заведомо он единственный:
Код:

for /f "delims=" %%a in ('
        wmic path win32_networkadapter where physicaladapter^=true get * /value
') do set %%a
echo %NetConnectionID%
pause


Iska 06-07-2018 13:09 2820839

YuS_2, это, конечно, хорошо, это, конечно, правильно… Но:
Скрытый текст
Код:

C:\Мои проекты\0169>wmic.exe Path Win32_NetworkAdapter where "PhysicalAdapter = 'TRUE'" get Caption, PhysicalAdapter
Caption                                                  PhysicalAdapter

[00000018] VirtualBox Host-Only Ethernet Adapter          TRUE
[00000019] Microsoft Virtual WiFi Miniport Adapter        TRUE


YuS_2 06-07-2018 15:33 2820857

Цитата:

Цитата Iska
это, конечно, хорошо, это, конечно, правильно… Но: »

Да, есть такое дело... потому и уточнил:
Цитата:

Цитата YuS_2
Если больше одного, тогда придется делать ветвление в коде или псевдомассив создавать, чтобы отобрать нужный. »

А псевдомассив, примерно так:
Код:

@echo off
setlocal enabledelayedexpansion
set i=0
set n=1

set m=20 &: Предполагаемое число адаптеров

rem Собственно, создаем массив:
for /f "delims=" %%a in ('
        wmic path win32_networkadapter where physicaladapter^=true get ^
        netenabled^,deviceid^,name /value^|findstr /i "deviceid netenabled name"
') do set /a i+=1&set "var!n!%%a"&if !i! equ 3 (set/a i=0&set/a n+=1)

только добавить необходимые параметры по аналогии и изменить их количество в условном блоке... в общем, безвыходных ситуаций бывает очень мало :)
Пусть ТС отпишется, что же ему требуется, в итоге.

Iska 06-07-2018 15:49 2820860

YuS_2, не, я не про то. Я про то, что виртуальные адаптеры вполне себе мимикрируют под физические. Потому я и пишу выше, что это дело автора выбрать набор критериев, по которым из всех имеющихся отберётся только один искомый, и ничего более.

iAngeR 06-07-2018 16:42 2820863

На всех ПК установлено по одной сетевой карте

YuS_2 06-07-2018 16:54 2820866

Цитата:

Цитата Iska
Я про то, что виртуальные адаптеры вполне себе мимикрируют под физические. »

Дык и я про то же... но тут вопрос больше к производителям драйверов, зачем они подменяют эти идентификаторы...

Цитата:

Цитата Iska
это дело автора выбрать набор критериев, по которым из всех имеющихся отберётся только один искомый, и ничего более. »

Так вот я как раз и пытаюсь подсказать, как ему выбирать доступные параметры... и к тому же в привязке к конкретному deviceID
ведь, имхо, это достаточно наглядно же:
Код:

wmic path win32_networkadapter where physicaladapter=true get * /value
Цитата:

Цитата iAngeR
установлено по одной сетевой карте »

в силу вышеозвученных причин, физическим устройством может стать и виртуальный адаптер, или например, ноутбук с wi-fi и lan адаптером... и т.п.

iAngeR 07-07-2018 16:55 2820942

Не-не. там как раз стоит только одна сетевая карта LAN. И иногда установлен Фискальный регистратор. После добавления второго знака %, в for /F "tokens=2 delims==" %%a in ('wmic path Win32_networkadapter where "NetConnectionStatus=2 AND PNPDeviceID LIKE 'PCI\\VEN%%'" GET NetConnectionID /VALUE') do set lanname=%%a ,выборка происходит верно. Еще проверю на нескольких машинах и отпишусь. Спасибо всем.


Время: 18:28.

Время: 18:28.
© OSzone.net 2001-