Mark_Titov
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Доброго дня уважаемые гуру... Помогите пож-ста. Пытаюсь сделать небольшую систему, которая бы грубо говоря пингами проверяла бы наличие связи. Состоит она вся из батников. В кратце - пингует, если пинги не прошли пишет логи и отсылает на мыло - это я сделал, отладил - все работает. Вторая часть этой системы - статистический модуль который тоже пингует объект, создает папки, в них пишет ежедневные логи и на основе ежедневных логов выводит в отдельном файле txt ежемесячный лог с подсчетом средне-арифметического процента потери связи за месяц. Потом пишет этот ежемесячный отчет в htm файл и отправляет на мыло... Так вот со второй частью у меня проблемы возникли. Не правильно ведет подсчет ежемесячных потерь и пишет ошибку "Missing operator". Вот весь код - Код: @echo off SetLocal EnableDelayedExpansion :ping cls set /a day_sum=0 set /a day_count=0 set /a mes_sum=0 set /a mes_count=0 set /A count=count+1 Title Pinging number %count% set "site=127.255.255.255" set "mes=%date:~-7%" 1>nul 2>&1 MD "%systemdrive%\AN-80\%mes%\%date%" set "Log=%systemdrive%\AN-80\%mes%\%date%\log.txt" for /f "tokens=2 delims=()" %%a in ('ping -n 4 %site%') do echo.%date% %time:~,8% %%a>> %log% for /f "tokens=3 delims=%% " %%a in (%systemdrive%\AN-80\%mes%\%date%\log.txt) do set /a day_sum=!day_sum!+%%a*100 & set /a day_count=!day_count!+1 set /a day_average=(%day_sum%)/(%day_count%)+10000 set /a day_average_int=!day_average:~0,-2!-100 echo.>> %systemdrive%\AN-80\%mes%\Monthly-report.txt echo Средне-арифметический процент потери связи за %date% составил - %day_average_int%.%day_average:~-2%%%> %systemdrive%\AN-80\%mes%\%date%\Daily-report.txt echo.> %systemdrive%\AN-80\%mes%\Monthly-report.txt for /r %systemdrive%\AN-80\%mes% %%a in (Daily-report.txt) do if exist %%a type %%a>> %systemdrive%\AN-80\%mes%\Monthly-report.txt for /f "tokens=9 delims=%% " %%a in (%systemdrive%\AN-80\%mes%\Monthly-report.txt) do set /a mes_sum=!mes_sum!+%%a*100 & set /a mes_count=!mes_count!+1 set /a mes_average=(%mes_sum%)/(%mes_count%)+10000 set /a mes_average_int=!mes_average:~0,-2!-100 echo.>> %systemdrive%\AN-80\%mes%\Monthly-report.txt echo>> %systemdrive%\AN-80\%mes%\Monthly-report.txt ------------------------------------------------------------------------- echo Средне-арифметический процент потери связи за %mes% составляет - %mes_average_int%.%mes_average:~-2%%%>> %systemdrive%\AN-80\%mes%\Monthly-report.txt goto :ping | for /f "tokens=9 delims=%% " %%a in (%systemdrive%\AN-80\%mes%\Monthly-report.txt) do set /a mes_sum=!mes_sum!+%%a*100 & set /a mes_count=!mes_count!+1 set /a mes_average=(%mes_sum%)/(%mes_count%)+10000 set /a mes_average_int=!mes_average:~0,-2!-100 Получается что он не считает правильно Monthly-report.txt из-за этой строки... IP адрес специально выставил такой после нескольких проходов будет видно не правильные расчеты... Средне-арифметический процент у меня вычисляется путем суммирования всех чисел, в данном случае - %, делённая на их количество. Очень надеюсь на вашу помощь и буду очень признателен... | Всего записей: 387 | Зарегистр. 12-04-2010 | Отправлено: 13:37 08-06-2010 | Исправлено: Mark_Titov, 13:37 08-06-2010 |
|