Показать полную графическую версию : [решено] Как вывести шлюз в командной строке?
команда route print выводит маршруты, как вывести отдельно шлюз?
чтобы отражалось только 192.168.0.1
Пробовал использовать find и findstr
route print | findstr "192.168.0.1", но он выдает еще 192.168.0.1ХХ адреса, как сделать чтобы был только 192.168.0.1
megaloman
26-01-2018, 20:51
@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
подкину пару своих вариантов, пусть здесь хранятся
№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
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, варианты абсолютно не рабочие.
megaloman
26-01-2018, 23:41
Мне нужно знать есть в данный момент 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, не работает, прописал несколько шлюзов:
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, т.е. есть он там или нет.
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 "
megaloman
27-01-2018, 12:38
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
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.