Что нового

Найти новый файл в папке

BaRsupillamy

Новичок
Сообщения
58
Репутация
0
я сделал то, что хотел... в принципе, подумал, что в реальном времени мониторить не стоит... с терабайтным винтом только первый раз долго сканировало, начиная со второго, было 10 минут, что меня в полне устроит...

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

[New]
[Archiv]
e:\Temp\AutoIt\Video\1\arch\cam03\0819=3493996324
e:\Temp\AutoIt\Video\1\arch\cam03\0820=941306926
e:\Temp\AutoIt\Video\1\arch\cam03\0821=1042063132
e:\Temp\AutoIt\Video\1\arch\cam03\0822=2656555176
e:\Temp\AutoIt\Video\1\arch\cam04\0821=318844
e:\Temp\AutoIt\Video\1\arch1\cam01\0819=396538150
e:\Temp\AutoIt\Video\1\arch1\cam01\0820=183967122
e:\Temp\AutoIt\Video\1\arch1\cam01\0822=468810800
e:\Temp\AutoIt\Video\1\arch1\cam02\0819=811023872
e:\Temp\AutoIt\Video\1\arch1\cam02\0820=279645176
e:\Temp\AutoIt\Video\1\arch1\cam02\0821=5934866
e:\Temp\AutoIt\Video\1\arch1\cam02\0822=855962562
[0819]
03=4|35|42|44|45|46|47|49|50|51|52|53|54|55|56|57|58|59|60|61|62|63|64|65|66|67|68|69|70|71|72|73|74|75|76|77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99|100|101|102|103|104|105|106|107|108|109|110|111|112|113|114|115|116|117|119|120|121|122|123|124|126|129|131|143
01=4|26|31|41|43|46|47|48|49|51|52|53|54|55|56|57|58|59|60|61|62|63|64|65|66|67|68|69|70|71|72|73|74|75|76|77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99|100|101|102|104|105|106|107|108|109|110|111|112|113|114|115|116|124|133
02=8|9|10|12|17|22|38|42|45|47|48|49|50|51|52|53|54|55|56|57|58|59|60|61|62|63|64|65|66|67|68|69|70|71|72|73|74|75|76|77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99|100|101|102|103|104|105|106|107|108|109|110|111|112|113|114|115|116|117|119|121|123|124|128|138|141
[0820]
03=7|46|48|49|50|51|52|53|54|55|56|57|58|59|60|61|62|63|64|65|66|67|68|69|70|71|72|73|74|75|76|77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99|100|101|102|105|106|110|111|114|118|122
01=16|25|28|41|45|49|50|51|52|54|55|56|57|58|59|60|61|62|63|64|65|66|67|68|69|70|71|72|73|74|75|76|77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99|100|101|102|103
02=9|15|23|30|39|48|49|50|51|52|53|54|55|56|57|58|59|60|61|62|63|64|65|66|67|68|69|70|71|72|73|74|75|76|77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99|100|101|102|103|104|108|116|126|129|132|139|140
[0821]
03=44|45|46|47|48|50|51|52|53|54|55|56|57|58|59|60|61|62|63|64|65|66|67|68|69|70|71|72|73|74|75|76|77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99|100|101|102|103|104|106|107|108|110|112|113|117|118|119|120|123|124|133
04=46
02=1|8|11|17|26|34|39|46|49|53|61|67|74|76|90|94|97|99|103|104|113|118|123|130|133|137|140|141
[0822]
03=8|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|60|61|62|63|64|65|66|67|68|69|70|71|72|73|74|75|76|77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99|100|101|102|103|104|105|106|107|108|109|112|113|114|115|117|118|119|123|124|125|131|135
01=47|48|51|52|53|54|55|56|57|58|59|60|61|62|63|64|65|66|67|68|69|70|71|72|73|74|75|76|77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99|100|101|102|103|104|105|106|107|108|109|110|111|112|113|114|115|116|117
02=0|10|17|18|20|29|33|42|45|47|48|49|50|51|52|53|54|55|56|57|58|59|60|61|62|63|64|65|66|67|68|69|70|71|72|73|74|75|76|77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99|100|101|102|103|104|105|106|107|108|109|110|111|112|113|114|115|116|117|119|120

вообще главная задача вот этой кучи цифр - показать, пишет ли камера... а то иногда даже в процессах висит приложение видеопрограммы, но сбойнуло и не пишет... или отключаются все камеры кроме одной... а тут надо будет прикрутить время рабочее и следить... если больше двух часов записей нет, сигнализировать мне об этом... в общем планы у меня далекоидущие :smile:
почему и использовал INI... я уже говорил, что просто мне не надо париться с обращением к нужным данным... т.е. я тогда легко получу данные с определённой камеры за определённую дату...
можете предложить более удобный вариант? если писать массив в файл и считывать массив, то придётся циклом по нему искать? так? или парсер делать какой нибудь свой? а мне по идее и так хватит производительности...

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

всем спасибо за помощь :smile:
 

BaRsupillamy

Новичок
Сообщения
58
Репутация
0
ОЧень интересно почитать себя самого 5 лет назад.
Тогда всё получилось, программа успешно работала, выполняя свои функции.
Использовал метод от VladUs.
Сейчас возникла новая похожая задача, взял старый исходник. Но не получилось приспособить его для новой задачи.
В папке появляются логи. При появлении программа отлично реагирует, парсит, добавляет в базу данных.
Но потом файл может измениться. И надо отследить это изменение и снова его обработать.
Нет ли способа с помощью WMI сразу узнать, какой файл был изменён?
Если я правильно понял, то UDF FileSystemMonitor только показывает, что что-то было изменено, но какой фалй был изменён, надо отслеживать самому. Так ли это?

P.S. Всё работает, лень было разбираться :smile:
Ну поднял хорошую тему зато :smile:
Спасибо всем.


Добавлено:
Сообщение автоматически объединено:

Рано обрадовался.
Эта UDF работает как-то достаточно медленно. По крайней мере у меня она не успевает обрабатывать все файлы появляющиеся в папке.
Хотел оставить срабатываение при создании файлов по методу VladUS, а изменения отслеживать с помощью UDF - получилось тоже плохо. UDF срабатывает на создание файла, как на изменение, да ещё и два раза.
В итоге получается, что при создании файла, моя фукнция вызывается три раза. Первый - от WMI, и ещё два - от UDF.
Кто-нибудь подскажет правильное решение?
Пока думаю только про занесение в массив имени/времени и слежении за этим списком. Но получается, что функция всё равно будет вызываться. А хотелось бы вызывать её только один раз по конкретному поводу.
 

BaRsupillamy

Новичок
Сообщения
58
Репутация
0
Решение нашёл здесь:
https://www.autoitscript.com/autoit3/docs/libfunctions/_WinAPI_ReadDirectoryChanges.htm
 
Верх