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

Компьютерный форум 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 | Цитировать


Укажите, где здесь:
Цитата:
2013-08-12 15:11:31.373 rsl1@002772826 30 …
именно номер, и где здесь время.

Укажите, каким образом из приведённого фрагмента можно определить, сколько раз открывался документ, и общее число.

Отправлено: 20:35, 13-12-2013 | #2



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

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


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


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

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


Номер: rsl1@002772826
Время: 15:11:31.373
Это не полный лог, я взял три строки из него для примера. Определить я думаю можно количеством повторений каждого из номера в логе.
Очень надо, помогите пожалуйста разобраться!

Отправлено: 12:22, 14-12-2013 | #3


Ветеран


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

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


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

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

set sFromDateTime=2013-08-05
set sToDateTime=2013-08-09
set sDocumentID=rsl1@005019694

"%ProgramFiles%\Log Parser 2.2\LogParser.exe" "SELECT Field3 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 [Document ID] = '%sDocumentID%' AND TO_TIMESTAMP('%sFromDateTime%', 'yyyy-MM-dd') <= Date AND TO_TIMESTAMP('%sToDateTime%', 'yyyy-MM-dd') >= Date GROUP BY [Document ID]" -i:TSV -iSeparator:space -headerRow:OFF -iCodepage:1251 -stats:OFF -rtp:-1

endlocal
exit /b 0
для Log Parser 2.2. Разумеется, все параметры можно хоть вводить, хоть передавать в командной строке; вывод направлять не в GUI, а на консоль или в файл и т.п. Настраивайте так, как Вам будет удобнее.

Отправлено: 14:09, 14-12-2013 | #4


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


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

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


Никогда с подобным не сталкивался, подскажите
Я так понял в строку set sSourceFile указывать путь к моему лог файлу.
set sFromDateTime - начало
set sToDateTime - конец
set sDocumentID - это что за параметр???

У меня выдает ошибку:

C:\Users\DigitalWAVE>@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFile=C:\Users\DigitalWAVE\Desktop\12.txt

set sFromDateTime=2013-08-05
set sToDateTime=2013-08-09
set sDocumentID=rsl1@005019694

"ProgramFiles\Log Parser 2.2\LogParser.exe" "SELECT Field3 AS [Document ID], COU
NT([Document ID]) AS [Total] USING TO_TIMESTAMP(STRCAT(STRCAT(Field1, ' '), Fiel
d2), 'yyyy-MM-dd hh:mm:ss.ll') AS Date INTO DATAGRID FROM '%sSourceFile%' WHERE
[Document ID] = '%sDocumentID%' AND TO_TIMESTAMP('%sFromDateTime%', 'yyyy-MM-dd'
) <= Date AND TO_TIMESTAMP('%sToDateTime%', 'yyyy-MM-dd') >= Date GROUP BY [Docu
ment ID]" -i:TSV -iSeparator:space -headerRow:OFF -iCodepage:1251 -stats:OFF -rt
p:-1
Системе не удается найти указанный путь.

endlocal
exit /b 0

Отправлено: 20:59, 14-12-2013 | #5


Ветеран


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

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


Цитата vision-d:
set sDocumentID - это что за параметр??? »
Номер документа.

Цитата vision-d:
У меня выдает ошибку: …Системе не удается найти указанный путь. »
Вы загрузили и установили Log Parser 2.2?

Отправлено: 14:48, 15-12-2013 | #6


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


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

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


Да, установил.
Если вставляю код в log parser то получаю следующее:

C:\Program Files (x86)\Log Parser 2.2>@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFile=C:\Users\DigitalWAVE\Desktop\12.txt

set sFromDateTime=2013-08-05
set sToDateTime=2013-08-09
set sDocumentID=rsl1@005019694

"%ProgramFiles%\Log Parser 2.2\LogParser.exe" "SELECT Field3 AS [Document ID], C
OUNT([Document ID]) AS [Total] USING TO_TIMESTAMP(STRCAT(STRCAT(Field1, ' '), Fi
eld2), 'yyyy-MM-dd hh:mm:ss.ll') AS Date INTO DATAGRID FROM '%sSourceFile%' WHER
E [Document ID] = '%sDocumentID%' AND TO_TIMESTAMP('%sFromDateTime%', 'yyyy-MM-d
d') <= Date AND TO_TIMESTAMP('%sToDateTime%', 'yyyy-MM-dd') >= Date GROUP BY [Do
cument ID]" -i:TSV -iSeparator:space -headerRow:OFF -iCodepage:1251 -stats:OFF -
rtp:-1
Error: SELECT clause: Syntax Error: unknown field 'Field3'.
The closest match for input format 'TSV' is 'Field1'.

To see valid fields for the TSV input format type:
LogParser -h -i:TSV

endlocal
exit /b 0

Отправлено: 19:41, 15-12-2013 | #7


Ветеран


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

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


Цитата vision-d:
Error: SELECT clause: Syntax Error: unknown field 'Field3'.
The closest match for input format 'TSV' is 'Field1'. »
Делать нечего — vision-d, выложите реальный лог-файл, упаковав его в архив под паролем, на RGhost. Ссылку на выложенный архив и пароль — отправьте мне в личку. Постарайтесь выбрать лог-файл поменьше размером.

Отправлено: 19:55, 15-12-2013 | #8


Ветеран


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

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


vision-d, письмо получил, архив забрал. Первое, что вижу — у нас в файле наличествует Tab, а не Space в качестве разделителя; кодировка файла не ANSI/1251, а UTF-8 . Смотрю.

Отправлено: 15:18, 16-12-2013 | #9


Ветеран


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

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


Итак, сначала исправленный пример для выложенного лог-файла:
читать дальше »
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

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

set sFromDateTime=2013-08-05
set sToDateTime=2013-08-15
set sDocumentID=rsl1@004665301

"%ProgramFiles%\Log Parser 2.2\LogParser.exe" "SELECT Field2 AS [Document ID], COUNT([Document ID]) AS [Total] USING Field1 AS Date INTO DATAGRID FROM '%sSourceFile%' WHERE [Document ID] = '%sDocumentID%' AND TO_TIMESTAMP('%sFromDateTime%', 'yyyy-MM-dd') <= Date AND TO_TIMESTAMP('%sToDateTime%', 'yyyy-MM-dd') >= Date GROUP BY [Document ID]" -i:TSV -iSeparator:tab -headerRow:OFF -iTsFormat:"yyyy-MM-dd hh:mm:ss.ll" -iCodepage:65001 -stats:OFF -rtp:-1

endlocal
exit /b 0

Теперь по поводу вопроса из 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" "SELECT Field2 AS [Document ID], COUNT([Document ID]) AS [Total] USING Field1 AS Date INTO DATAGRID FROM '%sSourceFile%' WHERE 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:tab -headerRow:OFF -iTsFormat:"yyyy-MM-dd hh:mm:ss.ll" -iCodepage:65001 -stats:OFF -rtp:-1

endlocal
exit /b 0

Вот результат:


Ежели потребно что-то ещё, або как-то иначе — пишите.

Отправлено: 15:47, 16-12-2013 | #10



Компьютерный форум 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




 
Переход