Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Создание месячного отчета

Ответить
Настройки темы
CMD/BAT - Создание месячного отчета

Пользователь


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

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


Помогите в решении такой задачи

Есть лог от АТС в приведенном ниже формате, нужно составить ежемесячный отчет т.е. из лога убрать все строчки прошлых месяцев.

10.06.1009:19:40 17 3003 00:00:368111111119 2 9 2
12.07.1009:21:09 17 3003 00:01:0789000000009 2 9 2
12.07.1009:24:12 1 3011 00:01:062111111 2 3

з.ы. Понимаю что есть тарификаторы, но со станцией возникли какие-то проблемы и работает только hyper terminal, который и пишет логи.

Отправлено: 20:12, 26-10-2012

 

Ветеран


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

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


Arsenik77, как Вы определяете, что первая строчка — предыдущий месяц, а две последующие — текущий?

Отправлено: 20:49, 26-10-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


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

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


Планировщиком ежемесячного 1-го числа копируется лог (почему 1-го потому-что в планировщике winXP нет понятия последние число месяца), чтоб упростить чтение лога надо убрать строки принадлежащие позапрошлым месяцам.

например: на сегодня - надо убрать августовские логи, т.е. оставить все сентябрьские строки и частично октябрьские (не критично)
31.08.1209:19:40 17 3003 00:00:368111111119 2 9 2
01.09.1209:21:09 17 3003 00:01:0789000000009 2 9 2
30.09.1209:21:09 17 3003 00:01:078945456009 2 9 2
01.10.1209:24:12 1 3011 00:01:062111111 2 3

еще один путь: удалять определенное количество первых строк в логе т.е. на 1-е число каждого месяца создается свой лог допустим ats01.08.12.log (он полный за все месяцы только на 01.08.12) выясняем сколько в нем строк и удаляем их из лога ats01.09.12.log (он полный за все месяцы только на 01.09.12) и получим лог за сентябрь месяц например LOGIATS01.09.12.log

Последний раз редактировалось Arsenik77, 26-10-2012 в 22:18. Причина: дополнил решения задачи


Отправлено: 21:42, 26-10-2012 | #3


Ветеран


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

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


Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set /a iMonth = %date:~3,2% - 1
set sMonth=0%iMonth%

type "0001.log" | findstr.exe "^...%sMonth:~-2%.*$"

endlocal
exit /b 0
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:15, 26-10-2012 | #4


Пользователь


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

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


Спасибо все работает

Последний раз редактировалось Arsenik77, 27-10-2012 в 07:27.


Отправлено: 07:02, 27-10-2012 | #5


Пользователь


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

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


Все работало до июля, потом батник стал выводить ошибку.
Выяснил что проблема в цифрах 8 и 9 (08 и 09) их нет в восьмеричной системе.
Помогите решить эту проблему.

Отправлено: 13:38, 07-08-2013 | #6


Googler


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

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


подозреваю, что в следующий раз проблема возникнет в январе (1-й месяц)

Цитата Arsenik77:
еще один путь: удалять определенное количество первых строк в логе т.е. на 1-е число каждого месяца создается свой лог допустим ats01.08.12.log (он полный за все месяцы только на 01.08.12) выясняем сколько в нем строк и удаляем их из лога ats01.09.12.log (он полный за все месяцы только на 01.09.12) и получим лог за сентябрь месяц например LOGIATS01.09.12.log »
может, подсчитать кол-во строк в старом файле и пропустить их при копировании?
Код: Выделить весь код
for /f "tokens=*" %%n in ('find /c /v ""^<"ats01.08.12.log"') do set $n=%%n
(for /f "usebackq tokens=* skip=%$n%" %%a in ("ats01.09.12.log") do @echo/%%a
)>LOGIATS01.09.12.log

Отправлено: 14:08, 07-08-2013 | #7


Пользователь


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

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


шедулер запускает батник и нужно чтоб дата (месяц) автоматический вписывалась и создавался лог типа ats-08.13.log, такое выражение уже не подходит Цитата amel27:
"ats01.08.12.log" »
Повторяю, предыдущий способ отлично работал до июля и думаю будет работать в октябре, Лог большой ~40MB. На этот комп захожу крайне редко.

Последний раз редактировалось Arsenik77, 07-08-2013 в 15:09.


Отправлено: 14:59, 07-08-2013 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Создание месячного отчета

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
PowerShell - Сравнение файла с оригиналом, создание отчета tarasov.evgeny Скриптовые языки администрирования Windows 9 02-10-2012 16:57
CMD/BAT - Автоматическая распечатка отчета Bigsom85 Скриптовые языки администрирования Windows 6 04-01-2012 08:13
Батник для запуска отчета в 1С Zlohobbit Программирование и базы данных 2 26-02-2004 11:44
Учет компьютеров, создание отчета для бухгалтерии salamandra Сетевые технологии 5 22-01-2004 17:03
Создание отчета в Билдере Crazy Wolf Программирование и базы данных 2 07-10-2002 11:21




 
Переход