registeruser1
08-06-2010, 07:24
Доброго дня уважаемые гуру...
Помогите пож-ста.
Пытаюсь сделать небольшую систему, которая бы грубо говоря пингами проверяла бы наличие связи. Состоит она вся из батников.
В кратце - пингует, если пинги не прошли пишет логи и отсылает на мыло - это я сделал, отладил - все работает.
Вторая часть этой системы - статистический модуль который тоже пингует объект, создает папки, в них пишет ежедневные логи и на основе ежедневных
логов выводит в отдельном файле 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 адрес специально выставил такой после нескольких проходов будет видно не правильные расчеты...
Средне-арифметический процент у меня вычисляется путем суммирования всех чисел, в данном случае - %, делённая на их количество.
Очень надеюсь на вашу помощь и буду очень признателен...
Помогите пож-ста.
Пытаюсь сделать небольшую систему, которая бы грубо говоря пингами проверяла бы наличие связи. Состоит она вся из батников.
В кратце - пингует, если пинги не прошли пишет логи и отсылает на мыло - это я сделал, отладил - все работает.
Вторая часть этой системы - статистический модуль который тоже пингует объект, создает папки, в них пишет ежедневные логи и на основе ежедневных
логов выводит в отдельном файле 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 адрес специально выставил такой после нескольких проходов будет видно не правильные расчеты...
Средне-арифметический процент у меня вычисляется путем суммирования всех чисел, в данном случае - %, делённая на их количество.
Очень надеюсь на вашу помощь и буду очень признателен...