sadmn
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору батник используется для переподключения, в первую очередь - вручную, (но и для usd подходит вполне) многое в нём обусловлено сбоями в моей сети и необходимостью контролировать чего там происходит при подключении.. Код: rem --- Так обозначу комментарии комментарии rem --- Для отображения русского текста батник сохраняется в дос кодировке @echo off setlocal set "try=0" rem --- Проверка, есть ли связь с модемом, чтоб избежать ошибок rasdial rem --- Если модем не подключен, таймер будет идти бесконечно :loc cls echo Установка связи с модемом %try% set /a "try+=1" ipconfig | Find /i "DNS">nul && goto start ping -n 2 127.0.0.1>nul goto loc rem --- Обнуление переменных, проверка текущего ip :start set "con=0" set "trya=1" for /f "tokens=1* delims=:. " %%a in ('ipconfig ^| find "IP"') do set "old_address=%%b" rem --- Поскольку часто подключается не с первого раза, rem --- поставил паузу между разрывом и поключением в 5 секунд rem --- она срабатывает, только если связь до этого с инетом была rem --- (ip не начинается с 192) :reconnect set "try=1" set /a "con+=1" if not "%old_address:~0,3%"=="192" (rasdial "USI" /d) else if "%trya%"=="1" goto try rem --- при ожидании выводится (для самоудовлетворения) rem --- количество переподключений для смены ip rem --- текущая попытка (из попыток всего) rem --- и ошибка, которо закончилось последнее подключение :wait for /L %%j in (5,-1,1) do cls & echo старт ПОДКЛЮЧЕНИЕ# %con% ПОПЫТКА# %try% (%trya%) [%erl%] & echo ЖДЁМ 5 секунд [ %%j% ] & ping -n 2 127.0.0.1 >nul :try cls echo ПОДКЛЮЧЕНИЕ# %con% ПОПЫТКА# %try% (%trya%) [%erl%] rasdial "provider" "login" "pass" rem --- с случае, если подключение прошло неудачно rem --- код ошибки больше нуля rem --- производится переход к пятисекундной паузе set "erl=%errorlevel%" if "%erl%"=="0" goto okay set /a "try+=1" set /a "trya+=1" rem --- чтоб не долбиться бесконечно, можно поставить разрыв цикла rem if "%try%"=="30" goto :eof Goto wait rem --- проверка, изменился ли ip kay for /f "tokens=1* delims=:. " %%a in ('ipconfig ^| find "IP"') do set "new_address=%%b" if "%new_address%"=="%old_address%" goto reconnect |
| Всего записей: 1354 | Зарегистр. 04-06-2006 | Отправлено: 19:48 12-06-2008 | Исправлено: sadmn, 22:13 12-06-2008 |
|