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

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

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

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


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

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


Изменения
Автор: vision-d
Дата: 26-12-2013
Добрый день!
Помогите написать батник для подсчета информации из логфайла. Нужно чтобы он подсчитал сколько раз открывалсись эти документы из приведенных в логе и общее число открытых документов за период. Строки лога выглядит так:
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
Благодарности: 8086

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


Из очередного письма в PM:
Цитата:
Можно ли ещё сделать чтобы он выдавал кол-во открытых страниц за период, подсчитывал кол-во уникальных документов за период и документов открытых вообще за период...
Поскольку Вам требуется выполнять ряд разных запросов на одном и том же источнике данных, есть смысл вынести текст запросов в отдельные файлы.

Пакетный файл примет следующий вид:
читать дальше »
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFile=E:\Песочница\0336\StatDocsView3kv.txt

set sFromDateTime=2013-08-05
set sToDateTime=2013-08-15

"%ProgramFiles%\Log Parser 2.2\LogParser.exe" file:"Query - Pages count by interval.sql"?SourceFile=%sSourceFile%+FromDateTime=%sFromDateTime%+ToDateTime=%sToDateTime%            -i:TSV -iSeparator:tab -headerRow:OFF -iTsFormat:"yyyy-MM-dd hh:mm:ss.ll" -iCodepage:65001 -stats:OFF -rtp:-1
"%ProgramFiles%\Log Parser 2.2\LogParser.exe" file:"Query - Unique documents count by interval.sql"?SourceFile=%sSourceFile%+FromDateTime=%sFromDateTime%+ToDateTime=%sToDateTime% -i:TSV -iSeparator:tab -headerRow:OFF -iTsFormat:"yyyy-MM-dd hh:mm:ss.ll" -iCodepage:65001 -stats:OFF -rtp:-1
"%ProgramFiles%\Log Parser 2.2\LogParser.exe" file:"Query - Documents count by interval.sql"?SourceFile=%sSourceFile%+FromDateTime=%sFromDateTime%+ToDateTime=%sToDateTime%        -i:TSV -iSeparator:tab -headerRow:OFF -iTsFormat:"yyyy-MM-dd hh:mm:ss.ll" -iCodepage:65001 -stats:OFF -rtp:-1

endlocal
exit /b 0


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')
2. Количество уникальных документов за период — «Query - Unique documents count by interval.sql»:
Код: Выделить весь код
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')
3. Общее количество документов за период — «Query - Documents count by interval.sql»:
Код: Выделить весь код
SELECT
	'%FromDateTime%' AS [From date],
	'%ToDateTime%' AS [To date],
	COUNT(Field2) AS [Total 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
Благодарности: 0

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


Ура, Работает!!!
Огромное спасибо!

Отправлено: 11:49, 18-12-2013 | #12


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


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

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


Помогите ещё сделать тоже самое с вот таким логом: http://yadi.sk/d/EIs3pqxcEaB4h
Нужно чтоб было
- Количество открытых документов - open
- Количество уникальных открытых документов - open, document
- Количество просмотренных страниц - view
- Количество распечатанных страниц - print
С выбором временных интервалов по дате


Спасибо.

Отправлено: 14:02, 19-12-2013 | #13


Ветеран


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

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


Насколько я понимаю, здесь совсем другая логика, и в «page» показывается номер страницы, а не количество.

Пакетный файл:
читать дальше »
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFile=C:\Песочница\036\new  2.txt

set sFromDateTime=2013-12-05
set sToDateTime=2013-12-15

"%ProgramFiles%\Log Parser 2.2\LogParser.exe" file:"Query - Opened documents count by interval.sql"?SourceFile="%sSourceFile%"+FromDateTime=%sFromDateTime%+ToDateTime=%sToDateTime%            -i:TSV -iSeparator:space -headerRow:OFF -nSkipLines:2 -iCodepage:1251 -stats:OFF -rtp:-1
"%ProgramFiles%\Log Parser 2.2\LogParser.exe" file:"Query - Unique opened documents count by interval.sql"?SourceFile="%sSourceFile%"+FromDateTime=%sFromDateTime%+ToDateTime=%sToDateTime%            -i:TSV -iSeparator:space -headerRow:OFF -nSkipLines:2 -iCodepage:1251 -stats:OFF -rtp:-1
"%ProgramFiles%\Log Parser 2.2\LogParser.exe" file:"Query - Viewed pages count by interval.sql"?SourceFile="%sSourceFile%"+FromDateTime=%sFromDateTime%+ToDateTime=%sToDateTime%            -i:TSV -iSeparator:space -headerRow:OFF -nSkipLines:2 -iCodepage:1251 -stats:OFF -rtp:-1
"%ProgramFiles%\Log Parser 2.2\LogParser.exe" file:"Query - Printed pages count by interval.sql"?SourceFile="%sSourceFile%"+FromDateTime=%sFromDateTime%+ToDateTime=%sToDateTime%            -i:TSV -iSeparator:space -headerRow:OFF -nSkipLines:2 -iCodepage:1251 -stats:OFF -rtp:-1

endlocal
exit /b 0


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')
2. «Query - Unique opened documents count by interval.sql»:
Код: Выделить весь код
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')
3. «Query - Viewed pages count by interval.sql»:
Код: Выделить весь код
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')
4. «Query - Printed pages count by interval.sql»:
Код: Выделить весь код
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
Благодарности: 0

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


Да, именно так. Все в норме, работает!
Можно ещё сделать чтобы скрипт как для первого лога составлял список какие файлы были открыты и сколько раз с интервалом дат.
Спасибо за помощь!
Если не трудно посоветуйте литературу по созданию таких скриптов..

Отправлено: 11:17, 20-12-2013 | #15


Ветеран


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

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


Цитата vision-d:
Можно ещё сделать чтобы скрипт как для первого лога составлял список какие файлы были открыты и сколько раз с интервалом дат. »
Подумаем.

Цитата vision-d:
Если не трудно посоветуйте литературу по созданию таких скриптов.. »
В документации — «%ProgramFiles%\Log Parser 2.2\LogParser.chm». По составлению же самих запросов SQL сгодится любой приличный учебник по Microsoft SQL Server объёмом от 1200-1400 страниц и выше (в LogParser используется урезанный вариант SQL).

Отправлено: 12:27, 20-12-2013 | #16


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


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

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


Цитата Iska:
Подумаем »
Салют!
Удалось что-нибудь придумать?

Отправлено: 09:55, 23-12-2013 | #17


Ветеран


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

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


vision-d, руки пока не дошли.

Отправлено: 11:25, 23-12-2013 | #18


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


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

Профиль | Отправить 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
Благодарности: 8086

Профиль | Отправить 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



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход