PDA

Показать полную графическую версию : Определение "Подключение по локальной сети" на сетевом адаптере


iAngeR
05-07-2018, 16:26
На клиентских ПК сетевые параметры прописываются статикой. В списке Сетевых подключений бывают виртуальные адаптеры (прим. 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
Подскажите, что нужно добавить? »
Надо добавить условие, которое однозначно позволит отличать одно:
Подключение через сетевую карту »
от прочих:
бывают виртуальные адаптеры (прим. Microsoft Video драйвер или сетевой интерфейс фискального регистратора). »

iAngeR
05-07-2018, 23:36
Подскажите, где ошибка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
iAngeR, как минимум — удвойте символ «%» в условии запроса при использовании внутри пакетного файла:
… LIKE 'PCI\\VEN%%'" …

YuS_2
06-07-2018, 11:39
При работе скрипта параметры иногда прописываются в виртуальные адаптеры, а не в Подключение через сетевую карту. Подскажите, что нужно добавить? »
Так отделите физические адаптеры от виртуальных... вопрос только в том, сколько есть физ.адаптеров на машине. Если больше одного, тогда придется делать ветвление в коде или псевдомассив создавать, чтобы отобрать нужный. Если же заведомо он единственный:
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
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
это, конечно, хорошо, это, конечно, правильно… Но: »
Да, есть такое дело... потому и уточнил:
Если больше одного, тогда придется делать ветвление в коде или псевдомассив создавать, чтобы отобрать нужный. »
А псевдомассив, примерно так:
@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
YuS_2, не, я не про то. Я про то, что виртуальные адаптеры вполне себе мимикрируют под физические. Потому я и пишу выше, что это дело автора выбрать набор критериев, по которым из всех имеющихся отберётся только один искомый, и ничего более.

iAngeR
06-07-2018, 16:42
На всех ПК установлено по одной сетевой карте

YuS_2
06-07-2018, 16:54
Я про то, что виртуальные адаптеры вполне себе мимикрируют под физические. »
Дык и я про то же... но тут вопрос больше к производителям драйверов, зачем они подменяют эти идентификаторы...

это дело автора выбрать набор критериев, по которым из всех имеющихся отберётся только один искомый, и ничего более. »
Так вот я как раз и пытаюсь подсказать, как ему выбирать доступные параметры... и к тому же в привязке к конкретному deviceID
ведь, имхо, это достаточно наглядно же:
wmic path win32_networkadapter where physicaladapter=true get * /value

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

iAngeR
07-07-2018, 16:55
Не-не. там как раз стоит только одна сетевая карта 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 ,выборка происходит верно. Еще проверю на нескольких машинах и отпишусь. Спасибо всем.




© OSzone.net 2001-2012