Войти

Показать полную графическую версию : [решено] Получение данных о сетевых интерфейсах


a1ek9
10-08-2024, 20:32
И снова, добрый вечер)
Подскажите пожалуйста, возможно ли в Однострочном варианте привести в порядок полученный ответ?
wmic nic get NetConnectionID
NetConnectionID

Ethernet
Беспроводная сеть











OpenVPN Wintun
OpenVPN TAP-Windows6
OpenVPN Data Channel Offload

Нужно удалить пустые строки, NetConnectionID эта строчка впринцепи не мешается, но если можно, то и ее убрать. Понимаю что тут шаристые ребята, и на powershell мне как всегда накидают код за 5сек (благодарю всех кто помогает нам, неучам), можно и его на крайний случай. Но все же жедательно cmd и повторюсь, однострочный. Скиньте ребята пожалуйста примеры того как можно реализовать) Почти всегда в своих темах пишу про Однострочный код, напишу зачем наконец-то) Я пишу небольшой, но очень функциональный твикер (в скором будущем покажу его), на Lua. В силу того, что язык довольно редкий в наше время, не много желающих делится кодом, а по справке многого не сделаешь. Сейчас получаю список адаптеров через WMI, проблема там та же, куча пустых строк и среди них несколько адаптеров. на Lua я не смог реализовать код, для удаления пустых строк\данных (combox). Поэтому решил попыть счастья в cmd.
p.s. Если тут есть, кто понимает Lua (тоже скриптовым языком считается), то с радостью пообщаюсь, может получится решить проблему(

DJ Mogarych
10-08-2024, 20:45
Однострочный CMD:

powershell -c "(gwmi Win32_NetworkAdapter).NetConnectionID"

a1ek9
10-08-2024, 20:58
Однострочный CMD: »
То что надо, благодарочка вам! А вот без powershell можно?
Судя по хелпу в cmd , что-то можно сделать в параметрах при отображении, find не помогает..

NickM
11-08-2024, 15:15
возможно ли в Однострочном варианте привести в порядок полученный ответ? »
Типа такого?
wmic nic get NetConnectionID | findstr /V NetConnectionID | findstr /BRC:"^[ ]*[^ ]"

a1ek9
11-08-2024, 18:56
Типа такого? »
Прямо в цвет! :o Спасибо тебе, дружище :clapping:

a1ek9
28-09-2024, 16:15
Типа такого? »
А можешь еще подсказать как тут справиться? Чтобы только ip-адреса отображались?
netsh interface ip show dnsservers name="Беспроводная сеть"
У меня вышло вот так:
netsh interface ip show dnsservers name="Беспроводная сеть" | findstr /M [0-9]

Статически настроенные DNS-серверы: 94.247.43.254
194.36.144.87
Но есть еще лишнее. Добавлять туда [] буквы всех языков тоже такой себе вариант.

NickM
28-09-2024, 17:19
Типа такого?

@echo off
for /f "tokens=2 delims==" %%a in ('wmic path Win32_networkadapter where ^"NetConnectionStatus^=2^" get NetConnectionID /value') do set "actconn=%%a"
for /f "usebackq tokens=1,2* delims=:" %%a in (`netsh interface ipv4 show dnsservers "%actconn%" ^| findstr /R "[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*"`) do echo %%b

a1ek9
28-09-2024, 17:22
Типа такого? »
Почти, только скрипт видит один адрес. Их может быть два и более
netsh interface ip show dnsservers name="Беспроводная сеть" | findstr /M [0-9] »
Или подскажите пожалуйста, как убрать пробелы? проверю в своем скрипте может так все обойдется)

NickM
30-09-2024, 10:02
Или подскажите пожалуйста, как убрать пробелы? »
Попробуйте так (ищем строки по паттерну, отрезаем последние 15 символов (4 октета и 3 точки), удаляем пробелы, ищем первое вхождение цифры, обрезаем строку) (микс из доступного кода в сети):

@echo off
setlocal enabledelayedexpansion
for /f "tokens=2 delims==" %%a in ('wmic path Win32_networkadapter where ^"NetConnectionStatus^=2^" get NetConnectionID /value') do set "actconn=%%a"
for /f "usebackq tokens=1* delims=" %%a in (`netsh interface ipv4 show dnsservers "%actconn%" ^| findstr /R "[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*"`) do (
set "ip=%%a"
set "ip=!ip:~-15!"
set "ip=!ip: =!"
set "n=0"
call :cutnum
echo.!ip!
)
goto :EOF

:cutnum
for %%a in ("!ip:~%n%,1!") do (
set /a num="%%~a"
if !num! equ 0 (
set /a n+=1
goto :cutnum
)
)
set "ip=!ip:~%n%!"

NickM
06-10-2024, 11:11
a1ek9, предложенный вариант не отработал?




© OSzone.net 2001-2012