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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Получение данных о сетевых интерфейсах (http://forum.oszone.net/showthread.php?t=355582)

a1ek9 10-08-2024 20:32 3029773

Получение данных о сетевых интерфейсах
 
И снова, добрый вечер)
Подскажите пожалуйста, возможно ли в Однострочном варианте привести в порядок полученный ответ?
Код:

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 3029774

Однострочный CMD:
Код:

powershell -c "(gwmi Win32_NetworkAdapter).NetConnectionID"

a1ek9 10-08-2024 20:58 3029775

Цитата:

Цитата DJ Mogarych
Однострочный CMD: »

То что надо, благодарочка вам! А вот без powershell можно?
Судя по хелпу в cmd , что-то можно сделать в параметрах при отображении, find не помогает..

NickM 11-08-2024 15:15 3029794

Цитата:

Цитата a1ek9
возможно ли в Однострочном варианте привести в порядок полученный ответ? »

Типа такого?
Код:

wmic nic get NetConnectionID | findstr /V NetConnectionID | findstr /BRC:"^[ ]*[^ ]"

a1ek9 11-08-2024 18:56 3029798

Цитата:

Цитата NickM
Типа такого? »

Прямо в цвет! :o Спасибо тебе, дружище :clapping:

a1ek9 28-09-2024 16:15 3031144

Цитата:

Цитата NickM
Типа такого? »

А можешь еще подсказать как тут справиться? Чтобы только 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 3031146

Типа такого?

Код:

@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 3031147

Цитата:

Цитата NickM
Типа такого? »

Почти, только скрипт видит один адрес. Их может быть два и более
Цитата:

Цитата a1ek9
netsh interface ip show dnsservers name="Беспроводная сеть" | findstr /M [0-9] »

Или подскажите пожалуйста, как убрать пробелы? проверю в своем скрипте может так все обойдется)

NickM 30-09-2024 10:02 3031203

Цитата:

Цитата a1ek9
Или подскажите пожалуйста, как убрать пробелы? »

Попробуйте так (ищем строки по паттерну, отрезаем последние 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 3031360

a1ek9, предложенный вариант не отработал?


Время: 19:38.

Время: 19:38.
© OSzone.net 2001-