eugenyburynin
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору @echo off rem Еещё один вариант, для совсем уж тяжёлых случаев (вроде моего). Речь идёт о: rem 1) Модем ZyXEL P-660 EE в режиме РОУТЕРА. rem 2) Пауза необходимая для смены IP составляет десятки(!) минут. rem Ощая идея такая, что батник LogAnalyzer.BAT написанный kandiner, rem анализирует USDownloader.log rem и выясняет какую паузу задаёт рапида после очередной закачки. rem Если время этой паузы превышает заданное нами в переменной SET TIME, rem то запускается батник для реконнекта. rem Всё гениально просто. rem В итоге под руководством автора kandiner LogAnalyzer.BAT приобрёл такой вид: rem Задаём: rem SET ERRORLINE= - номер строки (именно этой: rem 13.03.2007 14:30:31 x Плагин вернул ошибку: "Server report: wait 124 minutes" rem от конца лога, в которой написано время ожидания. rem SET TIMEPOS= - позиция числа минут (124) в этой строке (считать по пробелам) rem SET TIME=20 - контрольное время вминутах, т.е. время необходимое для смены IP. rem Бывают в жизни случаи, когда реконнект нужно сделать аж на 23 минуты, rem как в моём случае, а раньше провайдер не даёт новый IP. rem ChangeIP.bat - батник который собственно и запускает процедуру определения rem текущего внешнего IP, смену IP, определение нового внешнего IP? rem сравнение нового и старого IP и ... понятно в общем. rem В расписании USD привязался к условию "Перед попыткой получить ссылку". @echo off SET ERRORLINE=3 SET TIMEPOS=10 SET TIME=20 type "C:\USDownloader\USDownloader.log" | find /v /c "" > lines set LINES=0 set /p LINES=<lines del lines. if %LINES% LSS %ERRORLINE% goto :EOF set /a LINES=LINES-ERRORLINE for /f "usebackq tokens=3,%TIMEPOS%" %%a IN (`more +%LINES% "C:\USDownloader\USDownloader.log" `) do @call :CheckTimeOut %%a %%b %TIME% goto :EOF :CheckTimeOut @echo off SET /A WAITTIME=%2+0 if "%1" EQU "" goto :EOF if "%1" NEQ "x" goto :EOF if %WAITTIME% LSS %3 ( echo %WAITTIME% minutes - no reconnect ) ELSE ( echo %WAITTIME% minutes - ChangeIP ChangeIP.bat ) |