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

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

Ответить
Настройки темы
CMD/BAT - [решено] Как вывести шлюз в командной строке?
zai zai вне форума

Аватара для zai

Ветеран


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


Конфигурация

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


команда route print выводит маршруты, как вывести отдельно шлюз?
чтобы отражалось только 192.168.0.1
Пробовал использовать find и findstr
route print | findstr "192.168.0.1", но он выдает еще 192.168.0.1ХХ адреса, как сделать чтобы был только 192.168.0.1

-------
А зачем тебе жужжать, если ты не пчела? По-моему так.


Отправлено: 18:33, 26-01-2018

 

Ветеран


Contributor


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

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


Код: Выделить весь код
@Echo Off
cls

chcp 437 >nul
FOR /F "tokens=1* delims=:" %%a in ('ipconfig ^| find "Default Gateway"') Do Set Gateway=%%b &GoTo :Continue
:Continue
Set "Gateway=%Gateway: =%"
chcp 866 >nul

Echo "%Gateway%"

pause

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

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

Отправлено: 20:51, 26-01-2018 | #2



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

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


Ветеран


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

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


подкину пару своих вариантов, пусть здесь хранятся
№1
Код: Выделить весь код
@echo off
set "na="& set "shl="
for /f "tokens=2 delims==" %%a in ('wmic path Win32_networkadapter where ^(NetConnectionStatus^="2"^) get NetConnectionID /value^|find "="') do if not defined na set "na=%%a"
for /f "delims=[]" %%a in ('ipconfig /all^|find /n "%na%"') do set "ns=%%a"
for /f "tokens=2 delims=:" %%a in ('ipconfig /all^|more +%ns%^|find "Основной шлюз"') do if not defined shl set "shl=%%a"
echo %shl: =%
pause
№2
Код: Выделить весь код
@echo off
for /f "tokens=2 delims=:" %%a in ('netsh interface ip show addresses name^="Имя подключения"^|find "Основной шлюз"') do set "shl=%%a"
echo %shl: =%
pause
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:12, 26-01-2018 | #3

zai zai вне форума Автор темы

Аватара для zai

Ветеран


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

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


megaloman, это не то. Мне нужно знать есть в данный момент 192.168.0.1 или вместо него другой шлюз. Или прописано несколько шлюзов, но среди них есть 192.168.0.1, т.е. не ipconfig ^| find "Default Gateway", а ipconfig | find "192.168.0.1", но что бы не выводилось 192.168.0.1ХХ (после 1 не было значений, например 192.168.0.12, 192.168.0.123)
alpap, варианты абсолютно не рабочие.

-------
А зачем тебе жужжать, если ты не пчела? По-моему так.


Последний раз редактировалось zai, 26-01-2018 в 23:20.


Отправлено: 23:10, 26-01-2018 | #4


Ветеран


Contributor


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

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


Цитата zai:
Мне нужно знать есть в данный момент 192.168.0.1 или вместо него другой шлюз. Или прописано несколько шлюзов, но среди них есть 192.168.0.1 »
Код: Выделить весь код
@Echo Off
cls

Set "FindGateway=192.168.0.1"

chcp 437 >nul

Set /A L=0
FOR /F "tokens=1* delims=:" %%a in ('ipconfig ^| find "Default Gateway"') Do Echo %%b &If "%%b"==" %FindGateway%" Set /A L=1
chcp 866 >nul

If %L%==0 (Echo Gateway %FindGateway% NOT present) else (Echo Gateway %FindGateway% PRESENT)
pause

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 27-01-2018 в 00:07.


Отправлено: 23:41, 26-01-2018 | #5

zai zai вне форума Автор темы

Аватара для zai

Ветеран


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

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


megaloman, не работает, прописал несколько шлюзов:
route add 0.0.0.0 mask 0.0.0.0 192.168.0.1
route add 0.0.0.0 mask 0.0.0.0 192.168.0.12
route add 0.0.0.0 mask 0.0.0.0 192.168.0.123
Когда я прописываю в bat ip каждого шлюза по отдельности, то видит он всегда только основной шлюз, но вместо 192.168.0.1 может другой стать основным шлюзом, тогда bat не найдет нужный IP, т.е. есть он там или нет.

-------
А зачем тебе жужжать, если ты не пчела? По-моему так.


Отправлено: 09:55, 27-01-2018 | #6


Ветеран


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

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


zai, используйте регулярные выражения

для шлюза по умолчанию:
Код: Выделить весь код
route print | findstr /r /c:"^ *0\.0\.0\.0 *0\.0\.0\.0 *192\.168\.0\.1 "
любого другого шлюза:
Код: Выделить весь код
route print | findstr /r /c:"^ *[0-9]*\.[0-9]*\.[0-9]*\.[0-9]* *[0-9]*\.[0-9]*\.[0-9]*\.[0-9]* *192\.168\.0\.1 "
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:00, 27-01-2018 | #7


Ветеран


Contributor


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

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


zai,
Код: Выделить весь код
@Echo Off
cls

Set "FindGateway=192.168.0.1"

Set /A L=0
FOR /F "tokens=3 delims= " %%a in ('route print') Do If "%%a"=="%FindGateway%" Set /A L=1

If %L%==0 (Echo Gateway %FindGateway% NOT present) else (Echo Gateway %FindGateway% PRESENT)
pause

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 12:38, 27-01-2018 | #8



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Как выполнить сценарий в Командной строке с помощью .cmd BKPB Скриптовые языки администрирования Windows 5 23-03-2016 09:26
CMD/BAT - Как в винраре создавать архивные тома в командной строке mark4ever Скриптовые языки администрирования Windows 1 19-01-2012 11:55
Как посмотреть квоту юзера в командной строке Arthes Microsoft Windows NT/2000/2003 5 27-05-2011 08:32
Блог - Как применять автоматическую подстановку имен файлов и папок в командной строке Vadikan Microsoft Windows 7 0 12-04-2011 11:30
Разное - [решено] как в командной строке получить идентификатор пользователя ? mitiya Microsoft Windows 2000/XP 3 05-09-2008 00:53




 
Переход