Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Старожил


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

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


Цитата Geleoss:
Нужно в файлик настроек записвать маску в привычной форме (255.255...). »
... паубывалбы

Код: Выделить весь код
@echo off
SetLocal EnableExtensions EnableDelayedExpansion

set Out="provider.ini"
set TMP="%~DPN0.TMP"
del /f %TMP% 2>nul

rem Получаем IP, с которого выход на шлюз по-умолчанию
for /f "tokens=4" %%A in ('route print ^| findstr /r /c:" 0.0.0.0 * 0.0.0.0 "') do (
set A=%%A
set A=!A:.= !
call :ValidateIP !A!
if not ErrorLevel 1 echo %%A>>%TMP%
)
if not exist %TMP% (
Echo Не удалось получить адрес подключения
exit 1
)

rem Ищем адреса сетей
for /f "usebackq tokens=* delims=" %%A in (%TMP%) do (
for /f "tokens=1,2" %%L in ('route print ^| findstr /r /c:" %%A "') do (
set Err=0
set L=%%L
set L=!L:.= !
call :ValidateIP !L!
set /a Err+=!ErrorLevel!
set M=%%M
set M=!M:.= !
call :ValidateIP !M!
set /a Err+=!ErrorLevel!
if "!L!"=="224 0 0 0" set Err=1
if "!M!"=="0 0 0 0" set Err=1
if "!M!"=="255 255 255 255" set Err=1
if !Err!==0 echo %%L %%M>%Out%
)
)

exit

:ValidateIP
set VErr=0
:ValidateIP1
if "%1"=="" exit /b !VErr!
set B=%1
set B=!B:0=!
if not "!B!"=="" if /i %1 LEQ 0 set /A VErr+=1
if /i %1 GEQ 256 set /A VErr+=1
shift
goto ValidateIP1
зы: просто убил процедуру вычисления длины маски и ее вызов заменил на просто вывод результата. Там, гдк выделено жирным - сам вывод результата - можете его внешний вид подправить на свой вкус...

Отправлено: 18:08, 06-04-2010 | #13