Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Получение данных о сетевых интерфейсах

Ответить
Настройки темы
CMD/BAT - [решено] Получение данных о сетевых интерфейсах

Аватара для a1ek9

Пользователь


Сообщения: 59
Благодарности: 1

Профиль | Отправить PM | Цитировать


И снова, добрый вечер)
Подскажите пожалуйста, возможно ли в Однострочном варианте привести в порядок полученный ответ?
Код: Выделить весь код
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 (тоже скриптовым языком считается), то с радостью пообщаюсь, может получится решить проблему(

Отправлено: 20:32, 10-08-2024

 

Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6585
Благодарности: 1511

Профиль | Отправить PM | Цитировать


Однострочный CMD:
Код: Выделить весь код
powershell -c "(gwmi Win32_NetworkAdapter).NetConnectionID"

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:45, 10-08-2024 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для a1ek9

Пользователь


Сообщения: 59
Благодарности: 1

Профиль | Отправить PM | Цитировать


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

Последний раз редактировалось a1ek9, 10-08-2024 в 22:04.


Отправлено: 20:58, 10-08-2024 | #3


Аватара для NickM

Ветеран


Contributor


Сообщения: 4446
Благодарности: 1053

Профиль | Отправить PM | Цитировать


Цитата a1ek9:
возможно ли в Однострочном варианте привести в порядок полученный ответ? »
Типа такого?
Код: Выделить весь код
wmic nic get NetConnectionID | findstr /V NetConnectionID | findstr /BRC:"^[ ]*[^ ]"
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:15, 11-08-2024 | #4


Аватара для a1ek9

Пользователь


Сообщения: 59
Благодарности: 1

Профиль | Отправить PM | Цитировать


Цитата NickM:
Типа такого? »
Прямо в цвет! Спасибо тебе, дружище

Последний раз редактировалось a1ek9, 11-08-2024 в 19:31.


Отправлено: 18:56, 11-08-2024 | #5


Аватара для a1ek9

Пользователь


Сообщения: 59
Благодарности: 1

Профиль | Отправить PM | Цитировать


Цитата 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
Но есть еще лишнее. Добавлять туда [] буквы всех языков тоже такой себе вариант.

Последний раз редактировалось a1ek9, 28-09-2024 в 16:48.


Отправлено: 16:15, 28-09-2024 | #6


Аватара для NickM

Ветеран


Contributor


Сообщения: 4446
Благодарности: 1053

Профиль | Отправить PM | Цитировать


Типа такого?

Код: Выделить весь код
@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
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:19, 28-09-2024 | #7


Аватара для a1ek9

Пользователь


Сообщения: 59
Благодарности: 1

Профиль | Отправить PM | Цитировать


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

Последний раз редактировалось a1ek9, 28-09-2024 в 18:34.


Отправлено: 17:22, 28-09-2024 | #8


Аватара для NickM

Ветеран


Contributor


Сообщения: 4446
Благодарности: 1053

Профиль | Отправить PM | Цитировать


Цитата 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, 30-09-2024 в 11:38.


Отправлено: 10:02, 30-09-2024 | #9


Аватара для NickM

Ветеран


Contributor


Сообщения: 4446
Благодарности: 1053

Профиль | Отправить PM | Цитировать


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

Отправлено: 11:11, 06-10-2024 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Получение данных о сетевых интерфейсах

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
PowerShell - [блог] Удаленное получение сетевых дисков у пользователя Kazun Скриптовые языки администрирования Windows 0 26-04-2018 22:30
Службы - Получение сетевых настроек DHCP IL_89 Microsoft Windows 7 7 01-10-2014 17:25
Доступ - [решено] Общий доступ на различных сетевых интерфейсах alex_dob Microsoft Windows 7 5 13-12-2009 16:10
Прочее - [решено] Вопрос об сетевых интерфейсах Гарин Общий по Linux 3 09-12-2008 13:40
[решено] Настройка шлюзов в сетевых интерфейсах. Sobol Microsoft Windows NT/2000/2003 14 08-11-2006 05:58




 
Переход