Показать полную графическую версию : Определение "Подключение по локальной сети" на сетевом адаптере
На клиентских ПК сетевые параметры прописываются статикой. В списке Сетевых подключений бывают виртуальные адаптеры (прим. 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
Подскажите, что нужно добавить? »
Надо добавить условие, которое однозначно позволит отличать одно:
Подключение через сетевую карту »
от прочих:
бывают виртуальные адаптеры (прим. Microsoft Video драйвер или сетевой интерфейс фискального регистратора). »
Подскажите, где ошибка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
iAngeR, как минимум — удвойте символ «%» в условии запроса при использовании внутри пакетного файла:
… LIKE 'PCI\\VEN%%'" …
При работе скрипта параметры иногда прописываются в виртуальные адаптеры, а не в Подключение через сетевую карту. Подскажите, что нужно добавить? »
Так отделите физические адаптеры от виртуальных... вопрос только в том, сколько есть физ.адаптеров на машине. Если больше одного, тогда придется делать ветвление в коде или псевдомассив создавать, чтобы отобрать нужный. Если же заведомо он единственный:
for /f "delims=" %%a in ('
wmic path win32_networkadapter where physicaladapter^=true get * /value
') do set %%a
echo %NetConnectionID%
pause
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
…
это, конечно, хорошо, это, конечно, правильно… Но: »
Да, есть такое дело... потому и уточнил:
Если больше одного, тогда придется делать ветвление в коде или псевдомассив создавать, чтобы отобрать нужный. »
А псевдомассив, примерно так:
@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)
только добавить необходимые параметры по аналогии и изменить их количество в условном блоке... в общем, безвыходных ситуаций бывает очень мало :)
Пусть ТС отпишется, что же ему требуется, в итоге.
YuS_2, не, я не про то. Я про то, что виртуальные адаптеры вполне себе мимикрируют под физические. Потому я и пишу выше, что это дело автора выбрать набор критериев, по которым из всех имеющихся отберётся только один искомый, и ничего более.
На всех ПК установлено по одной сетевой карте
Я про то, что виртуальные адаптеры вполне себе мимикрируют под физические. »
Дык и я про то же... но тут вопрос больше к производителям драйверов, зачем они подменяют эти идентификаторы...
это дело автора выбрать набор критериев, по которым из всех имеющихся отберётся только один искомый, и ничего более. »
Так вот я как раз и пытаюсь подсказать, как ему выбирать доступные параметры... и к тому же в привязке к конкретному deviceID
ведь, имхо, это достаточно наглядно же:
wmic path win32_networkadapter where physicaladapter=true get * /value
установлено по одной сетевой карте »
в силу вышеозвученных причин, физическим устройством может стать и виртуальный адаптер, или например, ноутбук с wi-fi и lan адаптером... и т.п.
Не-не. там как раз стоит только одна сетевая карта 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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC