Как обнаружить сетевой интерфейс "инициализирован"

Мой сетевой USB-адаптер (последние версии драйверов) исчезают из окна "Сетевые подключения" на панели управления, когда компьютер выходит из спящего режима. Поэтому создайте командный файл для сброса адаптера с помощью devcon. После сброса адаптера я хочу добавить некоторые IP-подсети программно, используя netsh. Проблема в том, что адаптеру, вероятно, понадобится некоторое время после сброса (команды disable && enable), потому что netsh не удалось, если он был запущен раньше, чем некоторое (скажем, 6 секунд, используется старый процессор Atom). Теперь я вставил тайм-аут с помощью команды "timeout /T", но это время может варьироваться в зависимости от загрузки системы. Вопрос: есть ли способ определить состояние адаптера программно из пакетного файла?

set "netcmd=netsh in ip add address ETH1 192.168.0.100 255.255.255.0"
devcon disable "USB\VID_9710&PID_7830" >NUL 
devcon enable "USB\VID_9710&PID_7830" >NUL 
timeout /T 6 >NUL
%netcmd%

1 ответ

netsh interface show interface name="Local Area Connection" показывает что-то вроде:

Local Area Connection
   Type:                 Dedicated
   Administrative state: Enabled
   Connect state:        Disconnected

Вы можете проверить его состояние с помощью:

:loop
timeout 2
echo still waiting...
netsh interface show interface name="Local Area Connection" | find "Connect state" |find "Connected" >nul || goto :loop
echo Interface is now connected.

То же самое можно сделать с ...find "Administrative state" |find "Enabled" ... (зависит от того, на какой статус адаптера вы ссылаетесь)

ПРИМЕЧАНИЕ: изменить Local Area Connection на имя вашего адаптера

Другие вопросы по тегам