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

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


Задача всё таже, нужно чтобы скрипт искал кол-во распечаток документов сделанные пользователями (всеми) из дополнительного файла (его направил вам в личку. Сортировка ID Документа, Total.

Отправлено: 08:04, 26-12-2013 | #41



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

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


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


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

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


Нашел вот такую штуку на perl
Код: Выделить весь код
#!/usr/bin/perl -w

my $strings = 'file1';
my $source = 'file2';
my $target = 'file3';

open(STRINGS, "< $strings") or die "Can't open $strings for reading";
while(<STRINGS>) {
s/\s+$//;
`cat $source | grep '$_' >> $target`;
}
close STRINGS;
Подойдет?

Отправлено: 13:59, 27-12-2013 | #42


Ветеран


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

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


vision-d, я не успеваю за Вами.

По поводу файла из этого поста: очень странный лог — каждая строка под 200 тысяч символов (из которых значимых — порядка двухсот-трёхсот). Подумайте, как сделать его меньше. Теоретически работать, возможно, и будет, но 35 гигабайт есть 35 гигабайт. Одно чтение длинных строк займёт уйму времени. Если найти возможность выкинуть кучу незначащих пробелов, файл вполне может сократиться до 60-100 мегабайт (а если в CSV — так и вовсе до 30-40).

По поводу файла из этого поста: как я понимаю, он полностью идентичен выложенному ранее отсюда.

Цитата vision-d:
Нашел вот такую штуку на perl… Подойдет? »
Не знаю, поскольку с Perl знаком весьма ознакомительно. Но вижу, что как минимум там есть вызов «cat» и «grep».


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

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


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


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

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


Да, извиняюсь за путаницу.
Я вытащил из нашей таблицы user (36гигов) нужные нам строки http://yadi.sk/d/01bJCL9_F4QMx получилось 50мб.
Теперь с таблицей можно работать нормально.
Нам нужно сделать чтобы скрипт подсчитывал из таблицы document_statistics
количество распечатанных документов сделанные пользователями из определенного зала таблицы user используя номер room.
Проще говоря это получается как фильтр пользователей.

Создал я новую тему где прошу копировать строки из document_statistics содержащие строки из другого файла где указаны id пользователей. Это как альтернативный вариант решения задачи http://forum.oszone.net/thread-274801.html

Последний раз редактировалось vision-d, 27-12-2013 в 16:57.


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


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


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

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


Цитата vision-d:
@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 »
Возможно ли сделать так чтобы задавать имя документа в строке set "sDocumentID=" не полностью /rsl01005000000/rsl01005031000/rsl01005031509/rsl01005031509.pdf, а использовать только последнюю часть названия /rsl01005031509.pdf?

Отправлено: 20:18, 30-12-2013 | #45


Ветеран


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

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


Конечно, можно. Но исходный файл уже недоступен.

Вариантов несколько. Например, использовать функцию «SUBSTR()» вкупе со «STRLEN()». Либо использовать в WHERE предикат «LIKE».

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


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


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

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


Исходник здесь http://yadi.sk/d/0G8GhDt0FFXKt

Если не сложно покажите как это сделать...

Отправлено: 12:38, 31-12-2013 | #47


Ветеран


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

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


Цитата vision-d:
Исходник здесь http://yadi.sk/d/0G8GhDt0FFXKt »
Цитата:
Размер: 462 МБ
Архив. Жду архив.

Отправлено: 02:27, 01-01-2014 | #48


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


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

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


Высылаю архив http://yadi.sk/d/j6J9QB1HFJNnR

Отправлено: 20:35, 01-01-2014 | #49


Ветеран


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

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


В ряде строк (251803, 415774 и т.д.) банально отсутствуют значения в поле документа. Вследствие этого корректная работа с ним невозможна никаким методом.

А так, вот Вам пример работы с LIKE. Пакетный файл:
читать дальше »
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFile=E:\Песочница\0344\document_statistics.txt
set sFromDateTime=2013-12-01
set sToDateTime=2013-12-31
set sPartDocumentID=rsl01003399443.pdf

"%ProgramFiles%\Log Parser 2.2\LogParser.exe" file:"Query - By Part of DocumentID.sql"?SourceFile=%sSourceFile%+FromDateTime=%sFromDateTime%+ToDateTime=%sToDateTime%+PartDocumentID=%sPartDocumentID% -i:TSV -iSeparator:space -nSkipLines:2 -headerRow:OFF -iCodepage:65001 -stats:OFF -rtp:-1

endlocal
exit /b 0

Query - By Part of DocumentID.sql:
читать дальше »
Код: Выделить весь код
SELECT
	[Date],
	[Document ID],
	[Action],
	[Page],
	[Succeeded],
	[IP],
	[User ID],
	[Extra]
USING
	TO_TIMESTAMP(STRCAT(STRCAT(Field1, ' '), Field2),'yyyy-MM-dd hh:mm:ss.ll') AS [Date],
	Field3 AS [Action],
	Field4 AS [Document ID],
	Field5 AS [Page],
	Field6 AS [Succeeded],
	Field7 AS [IP],
	Field8 AS [User ID],
	Field9 AS [Extra]
INTO DATAGRID
FROM '%SourceFile%'
WHERE
	[Document ID] LIKE '%%%PartDocumentID%' AND
	[Date] BETWEEN TO_TIMESTAMP('%FromDateTime%', 'yyyy-MM-dd') AND TO_TIMESTAMP('%ToDateTime%', 'yyyy-MM-dd')
ORDER BY [Date]
Это сообщение посчитали полезным следующие участники:

Отправлено: 00:43, 02-01-2014 | #50



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




 
Переход