|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Батник для подсчета информации из логов |
|
CMD/BAT - Батник для подсчета информации из логов
|
Пользователь Сообщения: 63 |
Профиль | Отправить PM | Цитировать
Добрый день!
Помогите написать батник для подсчета информации из логфайла. Нужно чтобы он подсчитал сколько раз открывалсись эти документы из приведенных в логе и общее число открытых документов за период. Строки лога выглядит так: 2013-08-12 15:11:31.373 rl1002772826 30 1,2,166,167,168,169,170,171,172,173,174,175,176,175,176,177,178,179,180,181,182,183,182,183,184,185, 186,187,188,2 ЕВГЕНИЙ АБАКМОВ 10.710.40.92 2013-08-06 15:24:31.537 rl1005019694 5 1,2,1,11,13 ЮЛИЯ АНШИНА 107.4.0.25 2013-08-07 19:11:13.037 rl1003313852 2 1,2 ИРИНА ИЛЬИНА 107.7.44.97 Структура предоставленных данных: - дата и время - номер документа - количество страниц документа, которые были просмотрены - перечень номеров страниц, которые были открыты - Имя пользователя - Фамилия пользователя - IP адрес |
|
Отправлено: 16:44, 13-12-2013 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Из очередного письма в PM:
Цитата:
Пакетный файл примет следующий вид: 1. Общее количество открытых страниц за период — «Query - Pages count by interval.sql»: SELECT '%FromDateTime%' AS [From date], '%ToDateTime%' AS [To date], SUM(Field3) AS [Total pages] USING Field1 AS Date INTO DATAGRID FROM '%SourceFile%' WHERE Date BETWEEN TO_TIMESTAMP('%FromDateTime%', 'yyyy-MM-dd') AND TO_TIMESTAMP('%ToDateTime%', 'yyyy-MM-dd') SELECT '%FromDateTime%' AS [From date], '%ToDateTime%' AS [To date], COUNT(DISTINCT Field2) AS [Total unique documents] USING Field1 AS Date INTO DATAGRID FROM '%SourceFile%' WHERE Date BETWEEN TO_TIMESTAMP('%FromDateTime%', 'yyyy-MM-dd') AND TO_TIMESTAMP('%ToDateTime%', 'yyyy-MM-dd') Надеюсь, ничего не напутал. |
|
Отправлено: 02:44, 18-12-2013 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 63
|
Профиль | Отправить PM | Цитировать Ура, Работает!!!
Огромное спасибо! |
Отправлено: 11:49, 18-12-2013 | #12 |
Пользователь Сообщения: 63
|
Профиль | Отправить PM | Цитировать Помогите ещё сделать тоже самое с вот таким логом: http://yadi.sk/d/EIs3pqxcEaB4h
Нужно чтоб было - Количество открытых документов - open - Количество уникальных открытых документов - open, document - Количество просмотренных страниц - view - Количество распечатанных страниц - print С выбором временных интервалов по дате Спасибо. |
Отправлено: 14:02, 19-12-2013 | #13 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Насколько я понимаю, здесь совсем другая логика, и в «page» показывается номер страницы, а не количество.
Пакетный файл: 1. «Query - Opened documents count by interval.sql»: SELECT '%FromDateTime%' AS [From date], '%ToDateTime%' AS [To date], COUNT(Field4) AS [Total opened documents] USING TO_TIMESTAMP(STRCAT(STRCAT(Field1, ' '), Field2),'yyyy-MM-dd hh:mm:ss.ll') AS Date INTO DATAGRID FROM '%SourceFile%' WHERE Field3 = 'open' AND Date BETWEEN TO_TIMESTAMP('%FromDateTime%', 'yyyy-MM-dd') AND TO_TIMESTAMP('%ToDateTime%', 'yyyy-MM-dd') SELECT '%FromDateTime%' AS [From date], '%ToDateTime%' AS [To date], COUNT(DISTINCT Field4) AS [Total opened unique documents] USING TO_TIMESTAMP(STRCAT(STRCAT(Field1, ' '), Field2),'yyyy-MM-dd hh:mm:ss.ll') AS Date INTO DATAGRID FROM '%SourceFile%' WHERE Field3 = 'open' AND Date BETWEEN TO_TIMESTAMP('%FromDateTime%', 'yyyy-MM-dd') AND TO_TIMESTAMP('%ToDateTime%', 'yyyy-MM-dd') SELECT '%FromDateTime%' AS [From date], '%ToDateTime%' AS [To date], COUNT(Field4) AS [Total viewed pages] USING TO_TIMESTAMP(STRCAT(STRCAT(Field1, ' '), Field2),'yyyy-MM-dd hh:mm:ss.ll') AS Date INTO DATAGRID FROM '%SourceFile%' WHERE Field3 = 'view' AND Date BETWEEN TO_TIMESTAMP('%FromDateTime%', 'yyyy-MM-dd') AND TO_TIMESTAMP('%ToDateTime%', 'yyyy-MM-dd') SELECT '%FromDateTime%' AS [From date], '%ToDateTime%' AS [To date], COUNT(Field4) AS [Total printed pages] USING TO_TIMESTAMP(STRCAT(STRCAT(Field1, ' '), Field2),'yyyy-MM-dd hh:mm:ss.ll') AS Date INTO DATAGRID FROM '%SourceFile%' WHERE Field3 = 'print' AND Date BETWEEN TO_TIMESTAMP('%FromDateTime%', 'yyyy-MM-dd') AND TO_TIMESTAMP('%ToDateTime%', 'yyyy-MM-dd') |
Отправлено: 16:18, 19-12-2013 | #14 |
Пользователь Сообщения: 63
|
Профиль | Отправить PM | Цитировать Да, именно так. Все в норме, работает!
Можно ещё сделать чтобы скрипт как для первого лога составлял список какие файлы были открыты и сколько раз с интервалом дат. Спасибо за помощь! Если не трудно посоветуйте литературу по созданию таких скриптов.. |
Отправлено: 11:17, 20-12-2013 | #15 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата vision-d:
Цитата vision-d:
|
||
Отправлено: 12:27, 20-12-2013 | #16 |
Пользователь Сообщения: 63
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Удалось что-нибудь придумать? |
|
Отправлено: 09:55, 23-12-2013 | #17 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать vision-d, руки пока не дошли.
|
Отправлено: 11:25, 23-12-2013 | #18 |
Пользователь Сообщения: 63
|
Профиль | Отправить PM | Цитировать Спасибо за помощь, разобрался...
@echo off setlocal enableextensions enabledelayedexpansion set sSourceFile=C:\Users\nadeykinDA\Desktop\document_statistics.txt set sFromDateTime=2013-05-05 set sToDateTime=2013-12-15 set sDocumentID= "%ProgramFiles%\Log Parser 2.2\LogParser.exe" "SELECT Field4 AS [Document ID], COUNT([Document ID]) AS [Total] USING TO_TIMESTAMP(STRCAT(STRCAT(Field1, ' '), Field2),'yyyy-MM-dd hh:mm:ss.ll') AS Date INTO DATAGRID FROM '%sSourceFile%' WHERE Field3 = 'open' AND TO_TIMESTAMP('%sFromDateTime%', 'yyyy-MM-dd') <= Date AND TO_TIMESTAMP('%sToDateTime%', 'yyyy-MM-dd') >= Date GROUP BY [Document ID] ORDER BY Total DESC" -i:TSV -iSeparator:space -headerRow:OFF -nSkipLines:2 -iTsFormat:"yyyy-MM-dd hh:mm:ss.ll" -iCodepage:1251 -stats:OFF -rtp:-1 endlocal exit /b 0 |
Отправлено: 13:29, 23-12-2013 | #19 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать vision-d, да, примерно так. Можете ещё заменить в условии «TO_TIMESTAMP('%sFromDateTime%', 'yyyy-MM-dd') <= Date AND TO_TIMESTAMP('%sToDateTime%', 'yyyy-MM-dd') >= Date» на «Date BETWEEN TO_TIMESTAMP('%FromDateTime%', 'yyyy-MM-dd') AND TO_TIMESTAMP('%ToDateTime%', 'yyyy-MM-dd')» как в последних примерах.
|
Отправлено: 13:44, 23-12-2013 | #20 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - батник для копирования файлов из папки на FTP | zigmund11 | Скриптовые языки администрирования Windows | 1 | 28-02-2013 17:37 | |
CMD/BAT - [решено] батник для копирования файлов из ряда поддиректорий | xumuk032 | Скриптовые языки администрирования Windows | 3 | 27-04-2010 21:23 | |
CMD/BAT - Батник для удаления следов usb из реестра | zedco | Скриптовые языки администрирования Windows | 0 | 26-03-2010 17:30 | |
CMD/BAT - [решено] Батник для извличения из рар архива фалика | dvassilyev | Скриптовые языки администрирования Windows | 8 | 10-08-2009 16:17 | |
[решено] Подскажите, пожалуйста, программу или батник для подсчета интервала времени | truvo | Хочу все знать | 10 | 10-06-2009 11:01 |
|