Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.08.17;
Скачать: CL | DM;

Вниз

FileWatcher+Sort   Найти похожие ветки 

 
VirEx ©   (2008-06-07 20:02) [0]

Подскажите, может кто знает хороший сортировщик, следящий за папкой и при появлении файла, копирующий его по сигнатуре или хотябы по маске расширения и имени в нужные папки (и если надо, распаковывающий архивы, содержимое которых будет также раскидывать по папкам). Возможно выполненный в виде сервиса и юзерской формы настроек "сценария сортировки".

На пальцах:
1. в каталоге А появляется файлы DOC1.txt, DOC1xxx.txt, trace.log, DOC1.rar (внутри DOC2.txt, file.log, DOC2xxx.txt), и DOC5zzz.rar (1.xyz, 2.xyz)
2. все файлы с маской DOC?.txt в каталог Б, т.е. DOC1.txt DOC2.txt (распаковывается из архива)
3. все файлы с маской DOC?xxx.txt в каталог В: DOC1xxx.txt и DOC2xxx.txt (из архива)
4. все файлы *.log в папку Г: trace.log и file.log (из архива), при этом они из папки А удаляются
5. все файлы DOC????.rar в папку Д
6. каталог А будет "объектом" слежения программы сегодня, а завтра программа будет следить за папкой A2


 
Тын-Дын ©   (2008-06-07 20:06) [1]


> VirEx ©   (07.06.08 20:02)


Так напиши. Али не программер?
Программа-то узкоспециализированная получается.
Ещё зависит от того, что за программа выкладывает эти файлы в каталог(каким методом идет запись).


 
Игорь Шевченко ©   (2008-06-07 20:08) [2]

ReadDirectoryChangesW тебе в помощь


 
Тын-Дын ©   (2008-06-07 20:09) [3]

ReadDirectoryChangesW+
Проверка на окончание записи файла

FindFirst/Next/Close/ChangeNotification


 
VirEx ©   (2008-06-07 20:09) [4]


>  [2] Игорь Шевченко ©   (07.06.08 20:08)

Сделал я свой FileWatcher давно уже.
Но ежели уже есть готовый продукт-велосипед, чего его изобретать?
Я знаю что не программер и хреново сделаю, опять, поэтому и спрашиваю


 
Игорь Шевченко ©   (2008-06-07 20:11) [5]


> Проверка на окончание записи файла


const
 maxcnt = 360; //Ждем 6 минут максимум
var
 fd: Integer;
 ofs: _OFSTRUCT;
 err: DWORD;
 cnt: Integer;
begin
 cnt := 0;
 repeat
   Inc(cnt);
   FillChar(ofs, SizeOf(ofs), 0);
   ofs.cBytes := SizeOf(ofs);
   fd := OpenFile(PChar(FileName), ofs, OF_SHARE_EXCLUSIVE);
   err := GetLastError;
   if err <> ERROR_SHARING_VIOLATION then
     Break;
   Sleep(1000);
 until cnt >= maxcnt;
 CloseHandle(fd);
 if err <> ERROR_SUCCESS then
   raise Exception.Create(SysErrorMessage(err))


 
anton773   (2008-06-07 20:11) [6]

TFileWatcher? в примерах с делфи 2005 есть все, что тебе нужно


 
Игорь Шевченко ©   (2008-06-07 20:11) [7]

VirEx ©   (07.06.08 20:09) [4]


> Но ежели уже есть готовый продукт-велосипед, чего его изобретать?


Есть. Например мой. Успешно используется в течение 3 лет


 
Тын-Дын ©   (2008-06-07 20:13) [8]


> Игорь Шевченко ©   (07.06.08 20:11) [5]
>
> > Проверка на окончание записи файла


Это подходит, но только знать надо, как запись в файл идёт.
Некоторые программы записывают порциями (прикладные, не системные), открывая и закрывая файл между записью порций.


 
VirEx ©   (2008-06-07 20:15) [9]


> [6] anton773   (07.06.08 20:11)
> TFileWatcher? в примерах с делфи 2005 есть все, что тебе
> нужно

у меня дельфя 7я, сам искал примеры, и см. [4]


> [7] Игорь Шевченко ©   (07.06.08 20:11)
> Есть. Например мой. Успешно используется в течение 3 лет

в студию


 
Игорь Шевченко ©   (2008-06-07 20:16) [10]

Тын-Дын ©   (07.06.08 20:13) [8]

Если файл закрыт, то он свободен для использования. Я так полагаю.
А как действовать в случае, если программа периодически дописывает в файл, открывая его, дописывая и закрывая - если у тебя есть алгоритм, делись, буду признателен.


 
anton773   (2008-06-07 20:17) [11]


> Игорь Шевченко ©   (07.06.08 20:11) [5]
> >
> > > Проверка на окончание записи файла
>
>
> Это подходит, но только знать надо, как запись в файл идёт.
>
> Некоторые программы записывают порциями (прикладные, не
> системные), открывая и закрывая файл между записью порций.
>

TFileWatcher то чем не угодил? Ведь уже готовый компонент? Имеет все что нужно.


 
Игорь Шевченко ©   (2008-06-07 20:17) [12]

VirEx ©   (07.06.08 20:15) [9]


> в студию


Часть коммерческого продукта, по отдельности не продается.
А чтобы купить продукт целиком, тебе сначала надо создать авиакомпанию.


 
VirEx ©   (2008-06-07 20:18) [13]


>  [12] Игорь Шевченко ©   (07.06.08 20:17)

как говорится, не себе не людям


 
Игорь Шевченко ©   (2008-06-07 20:20) [14]

VirEx ©   (07.06.08 20:18) [13]

Примерно так. Направление я тебе дал - ищи.
Ищущий да обрящет, прыгающий да допрыгается.


 
Тын-Дын ©   (2008-06-07 20:20) [15]


> Игорь Шевченко ©   (07.06.08 20:16) [10]
> Тын-Дын ©   (07.06.08 20:13) [8]
>
> Если файл закрыт, то он свободен для использования. Я так
> полагаю.
> А как действовать в случае, если программа периодически
> дописывает в файл, открывая его, дописывая и закрывая -
> если у тебя есть алгоритм, делись, буду признателен.


Я давно тоже писал подобную программу для промышленной эксплуатации...
Но у меня файлы в каталог попадали тоже из моего приложения.
Как быть в случае записи по частям - не знаю.
Мне кажется, что надо оценить практически, сколько требуется времени на запись файла целиком в промышленных условиях и таймауты использовать с максимальным значением.
но это подойдет только если заранее известно, что фалы однотипные, рмаксимальный размер и т.п.
Слишком допущения большие...


 
VirEx ©   (2008-06-07 20:21) [16]


>  [14] Игорь Шевченко ©   (07.06.08 20:20)

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


 
Игорь Шевченко ©   (2008-06-07 20:22) [17]

VirEx ©   (07.06.08 20:21) [16]

А ты халявы хотел ? А халявы нетути.


> по сабжу спрашивается программа, не обязательно с исходниками


ну я тебе сказал - создавай авиакомпанию, покупай наш продукт.


 
Тын-Дын ©   (2008-06-07 20:23) [18]


> VirEx ©


Если найду старые разработки - очищу от лишнего и могу дать.


 
Игорь Шевченко ©   (2008-06-07 20:24) [19]

Тын-Дын ©   (07.06.08 20:20) [15]


> Но у меня файлы в каталог попадали тоже из моего приложения.


Свой со своим всегда договорится. Например, записав файл с заранее оговоренным расширением в заранее оговоренный каталог по полном окончании всей записи в обрабатываемый файл.


 
Тын-Дын ©   (2008-06-07 20:26) [20]


> Свой со своим всегда договорится. Например, записав файл
> с заранее оговоренным расширением в заранее оговоренный
> каталог по полном окончании всей записи в обрабатываемый
> файл.


Это да. К тому же, когда файл захватывается для записи, то как раз код из [5] будет достаточен.


 
VirEx ©   (2008-06-07 20:47) [21]


>  [17] Игорь Шевченко ©   (07.06.08 20:22)
> VirEx ©   (07.06.08 20:21) [16]
>
> А ты халявы хотел ? А халявы нетути.

халява есть всегда, как и жлобства - хоть отбавляй


 
VirEx ©   (2008-06-07 20:48) [22]


> [18] Тын-Дын ©   (07.06.08 20:23)
>
> > VirEx ©
>
>
> Если найду старые разработки - очищу от лишнего и могу дать.

был бы всенепременно рад


 
Игорь Шевченко ©   (2008-06-07 21:13) [23]

VirEx ©   (07.06.08 20:47) [21]

Ну ты же не хочешь писать и искать сам готовое. А моя работа стоит денег, как и любой продукт. Так что про жлобство лучше помалкивай.


 
Германн ©   (2008-06-08 01:08) [24]


> Часть коммерческого продукта, по отдельности не продается.
>
> А чтобы купить продукт целиком, тебе сначала надо создать
> авиакомпанию.
>

Ходят слухи, что при оснастке 5-го терминала аэропорта Хитроу, авиакомпания British Airways установила в нём новое ПО. Фамилии разработчиков ПО, название фирмы-разработчика ПО и страна разработчика хранятся в секрете.
:)


 
VirEx ©   (2008-06-08 08:23) [25]

Всё еще жду помощи :(


 
boa_kaa ©   (2008-06-08 09:25) [26]


> VirEx ©   (08.06.08 08:23) [25]
> Всё еще жду помощи :(

Переходи на .NET, не нужны будут сторонние компоненты


 
tesseract ©   (2008-06-08 10:13) [27]


> Переходи на .NET, не нужны будут сторонние компоненты


devexpress по любому надо ставить :-)


 
Тын-Дын ©   (2008-06-08 15:36) [28]


> VirEx ©


Давай немного подробнее о задаче?

1. Критично ли время реакции обработчика на появление файла в каталоге?
2. Будут ли мониториться на появление файлов сетевые диски?


 
VirEx ©   (2008-06-08 17:49) [29]

1. некритично.
2. да, и мониторная папка также может задаваться так: \\comp\d\

к тому же файлы допустим будет сохранять в мониторную папку TheBat! или команда copy


 
Тын-Дын ©   (2008-06-08 17:58) [30]

3. Размер файлов какой может быть?


 
VirEx ©   (2008-06-08 17:59) [31]

впринципе максимум 50 Мб


 
icelex ©   (2008-06-08 18:45) [32]


> tesseract ©   (08.06.08 10:13) [27]
> > Переходи на .NET, не нужны будут сторонние компоненты
> devexpress по любому надо ставить :-)

если честно, то даже не пользовался никогда
Просто для топикстартера FileSystemWatcher"а хватит


 
Тын-Дын ©   (2008-06-08 20:10) [33]


> VirEx ©   (08.06.08 17:59) [31]
> впринципе максимум 50 Мб


Простейший шаблон уже есть. Могу кинуть. Вариант рабочий, но пытливому уму всегда есть что доделывать.


 
VirEx ©   (2008-06-08 21:20) [34]

_ virex _ собака мэйл ру (без пробелов)


 
Тын-Дын ©   (2008-06-08 21:25) [35]

Подчёркивания нужны?


 
VirEx ©   (2008-06-08 21:27) [36]

если указываю, значит нужны


 
Тын-Дын ©   (2008-06-08 21:28) [37]


> VirEx ©   (08.06.08 21:20) [34]


Всю обработку делай в процедуре  OnFile
В примере в ней просто записывается в журнал перемещённый во временный каталог файл.
procedure OnFile(FilePath: String);
begin
 DirMon.AddLog(FilePath);
end;


 
Тын-Дын ©   (2008-06-08 21:33) [38]

Кстати, Верхне-Сысертский пруд водой заполнили?


 
VirEx ©   (2008-06-08 21:37) [39]


> [37] Тын-Дын ©   (08.06.08 21:28)

спасибо, завтра посмотрю...


 
VirEx ©   (2008-06-08 21:38) [40]


>  [38] Тын-Дын ©   (08.06.08 21:33)
> Кстати, Верхне-Сысертский пруд водой заполнили?

Незнаю, я там один раз был за семь лет.



Страницы: 1 2 вся ветка

Текущий архив: 2008.08.17;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.035 c
2-1215759810
TUserClass
2008-07-11 11:03
2008.08.17
"Полосатый" DBGrid и несколько выделенных записей ...


2-1216031084
small
2008-07-14 14:24
2008.08.17
TXPMAnifest


15-1214884536
ASR
2008-07-01 07:55
2008.08.17
Хочу сделать на сайте


6-1192086147
pathfinder
2007-10-11 11:02
2008.08.17
Работа с FTP-сервером через HTTP-proxy


15-1213957352
AlexDan
2008-06-20 14:22
2008.08.17
Полетел принтер..