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

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

 

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


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

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


Такой вопрос - если в строке set sDocumentID= идет перечисление например тех же номеров документа через запятую ,
что нужно тогда указывать в WHERE AND [Document ID] = '%sDocumentID%
Если запускаю так как есть, то процесс просто заканчивается.
Код: Выделить весь код
@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=/rsl01002000000/rsl01002738000/rsl01002738582/rsl01002738582.pdf
, /rsl01002000000/rsl01002745000/rsl01002745687/rsl01002745687.pdf


"%ProgramFiles%\Log Parser 2.2\LogParser.exe" "SELECT Field4 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%' WHERE
 Field3 = 'open' AND [Document ID] = '%sDocumentID%' AND TO_TIMESTAMP('%sFromDat
eTime%', 'yyyy-MM-dd') <= Date AND TO_TIMESTAMP('%sToDateTime%', 'yyyy-MM-dd') >
= Date GROUP BY [Document ID] ORDER BY Total DESC" -i:TSV -iSeparator:space -hea
derRow:OFF -nSkipLines:2 -iTsFormat:"yyyy-MM-dd hh:mm:ss.ll" -iCodepage:1251 -st
ats:OFF -rtp:-1

endlocal
exit /b 0

Отправлено: 15:46, 23-12-2013 | #21



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

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


Ветеран


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

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


Цитата vision-d:
если в строке set sDocumentID= идет перечисление например тех же номеров документа через запятую , »
Через точку с запятой. Значения — обрамить апострофами.

Цитата vision-d:
что нужно тогда указывать в WHERE AND [Document ID] = '%sDocumentID% »
Код: Выделить весь код
set sDocumentID='rsl1@005085351'; 'rsl1@003461496'; 'rsl1@004665301'
…
… WHERE [Document ID] IN (%sDocumentID%) …

Отправлено: 15:59, 23-12-2013 | #22


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


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

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


Что-то не получается...
Код: Выделить весь код
C:\Program Files\Log Parser 2.2>@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFile=D:\Script\StatDocsView3kv.txt

set sFromDateTime=2013-08-05
set sToDateTime=2013-08-15
set sDocumentID='rsl1@005085351'; 'rsl1@003461496'; 'rsl1@004665301'


"%ProgramFiles%\Log Parser 2.2\LogParser.exe" "SELECT Field2 AS [Document ID], C
OUNT([Document ID]) AS [Total] USING Field1 AS Date INTO DATAGRID FROM '%sSource
File%' WHERE [Document ID] IN '%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-M
M-dd hh:mm:ss.ll" -iCodepage:65001 -stats:OFF -rtp:-1
Error: Syntax Error: <content>: no valid content: expecting opening parenthesis
instead of token '''rsl1@005085351';'

endlocal
exit /b 0

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


Ветеран


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

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


Цитата vision-d:
Что-то не получается... »
Сравните:
читать дальше »
Цитата Iska:
WHERE [Document ID] IN (%sDocumentID%) »
и:
Цитата vision-d:
WHERE [Document ID] IN '%sDocumentID%' »

Зачем там апострофы вместо скобок?! Об этом и написано в:
Цитата vision-d:
Error: Syntax Error: <content>: no valid content: expecting opening parenthesis instead of token '''rsl1@005085351';' »
Пробуйте:
читать дальше »
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

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

set sFromDateTime=2013-08-05
set sToDateTime=2013-08-15
set sDocumentID='rsl1@005085351'; 'rsl1@002772826'; '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] IN (%sDocumentID%) AND Date BETWEEN TO_TIMESTAMP('%sFromDateTime%', 'yyyy-MM-dd') AND TO_TIMESTAMP('%sToDateTime%', 'yyyy-MM-dd') 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

Отправлено: 23:26, 23-12-2013 | #24


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


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

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


Прошу прощения, не доглядел....

Отправлено: 09:54, 24-12-2013 | #25


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


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

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


Есть ещё вот такая надобность. Есть дополнительный файл с id пользователей. Id указаны в основном файле в самом конце. Нужно чтобы скрипт искал кол-во распечаток документов сделанные пользователями из дополнительного файла. Сортировка ID Документа и Total
Я написал так, но это не правильно....

Код: Выделить весь код
C:\Program Files\Log Parser 2.2>@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFile=C:\Users\nadeykinDA\Desktop\document_statistics.txt
set sSourceFile2=C:\Users\nadeykinDA\Desktop\qqq.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], 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%' WHERE
 Field3 = 'print' AND Field1 FROM '%sSourceFile2%' = Field8 INTO DATAGRID FROM '
%sSourceFile%' 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:"y
yyy-MM-dd hh:mm:ss.ll" -iCodepage:1251 -stats:OFF -rtp:-1
Error: Syntax Error: <term1>: AND operator not followed by a valid <term1>:  nea
r 'Field1'

endlocal
exit /b 0
Помогите пожалуйста разобраться...

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


Ветеран


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

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


vision-d, фокус, скорее всего, не удастся. LogParser работает с одним источником данных (точнее — может и с несколькими, но однотипными). Иногда можно попытаться сделать «финт ушами» вида «SELECT Field11, Field12, … FieldN FROM Source1 WHERE Field11, Field12 IN (SELECT Field21, Field22 FROM Source2)».

Можно будет попробовать OLEDB Text Driver. Как обычно: выкладываете файлы и пишете, что и как требуется извлечь. А я посмотрю, что можно будет сделать. К сожалению, на содержимое файлов при использовании данной технологии накладывается гораздо больше ограничений, нежели при использовании LogParser.

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


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


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

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


Хотелось бы сделать чтобы для начала log parser находил в документе id из room 214 допустим. далее соберу нужную информацию

Отправлено: 16:55, 24-12-2013 | #28


Ветеран


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

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


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

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

"%ProgramFiles%\Log Parser 2.2\LogParser.exe" file:"Query - ID by Room.sql"?SourceFile=%sSourceFile%+Room=%sRoom% -i:TSV -iSeparator:space -headerRow:ON -iCodepage:1251 -stats:OFF -rtp:-1

endlocal
exit /b 0
Query - ID by Room.sql:
Код: Выделить весь код
SELECT id
INTO DATAGRID
FROM '%SourceFile%'
WHERE room = %Room%
Или напрямую:
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

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

"%ProgramFiles%\Log Parser 2.2\LogParser.exe" "SELECT id INTO DATAGRID FROM '%sSourceFile%' WHERE room = %sRoom%" -i:TSV -iSeparator:space -headerRow:ON -iCodepage:1251 -stats:OFF -rtp:-1

endlocal
exit /b 0

Отправлено: 17:35, 24-12-2013 | #29


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


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

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


Код: Выделить весь код
Error: Log row too long
тут уже где-то в реестре нужно менять параметр вроде..

Отправлено: 21:49, 24-12-2013 | #30



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




 
Переход