Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Сканирование папок на предмет файлов (число прочтений - 3171 )
pavlo
1c++ donor
1c++ power user
Отсутствует



Сообщений: 712
Местоположение: г. Новосибирск
Зарегистрирован: 10. Ноября 2006
Пол: Мужской
Сканирование папок на предмет файлов
09. Сентября 2014 :: 11:13
Печать  
Интересная задачка встала оптимизировать тормознутый поиск файлов в папках при загрузке в 1С.
переписал на FileSystemObject все не плохо (правда конечно напрягает немного, что сильно много времени занимает имхо file.item(0).Name), но это не так страшно.
А вот тут нарвался на 2 момента:
1. как получить быстро есть ли в папке файлы, потому как мне толи показалось, но folders.count это не быстрое свойство, такое ощущение что перечитывает также все файлы.
2. ГЛАВНОЕ - как получить быстро в папке файлы по определенной маске? Нарвался на то, что львиную долю тормозов теперь занимает сканирование 10т файлов по максе *.ext в которых 300 *.ext, а остальные *.del, не приятно но dir /b *.ext за доли секунд из этого каталога возвращает нужные.

Кто нибудь решал проблему эту? Улыбка Так для по размыслить у кого есть желание Подмигивание
  

1с++     3.2.4.1
Formex  2.0.5.99b
Наверх
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Сканирование папок на предмет файлов
Ответ #1 - 09. Сентября 2014 :: 11:22
Печать  
дык через тот же dir в файло выгрузи и парси его..
  
Наверх
 
IP записан
 
pavlo
1c++ donor
1c++ power user
Отсутствует



Сообщений: 712
Местоположение: г. Новосибирск
Зарегистрирован: 10. Ноября 2006
Пол: Мужской
Re: Сканирование папок на предмет файлов
Ответ #2 - 09. Сентября 2014 :: 11:32
Печать  
Это будет явно:
1. не красиво
2. если это делать, то на каждой папке явно будет в итоге медленее Улыбка
3. у dir явно же есть секрет Улыбка, к тому что может какой объект, какого либо класса это умеет Улыбка
  

1с++     3.2.4.1
Formex  2.0.5.99b
Наверх
IP записан
 
pavlo
1c++ donor
1c++ power user
Отсутствует



Сообщений: 712
Местоположение: г. Новосибирск
Зарегистрирован: 10. Ноября 2006
Пол: Мужской
Re: Сканирование папок на предмет файлов
Ответ #3 - 10. Сентября 2014 :: 04:19
Печать  
Да еще dir не пашет чего то при ЗапуститьПриложение даже через cmd.
А КомандаСистемы не вариант, всплывают консольные окна.
  

1с++     3.2.4.1
Formex  2.0.5.99b
Наверх
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Сканирование папок на предмет файлов
Ответ #4 - 10. Сентября 2014 :: 05:08
Печать  
ФС.НайтиПервыйФайл не пробовал?
или это и есть "тормознутый поиск"?
  

1&&2&&3
Наверх
 
IP записан
 
pavlo
1c++ donor
1c++ power user
Отсутствует



Сообщений: 712
Местоположение: г. Новосибирск
Зарегистрирован: 10. Ноября 2006
Пол: Мужской
Re: Сканирование папок на предмет файлов
Ответ #5 - 10. Сентября 2014 :: 06:38
Печать  
аа ты про пустую папку? нет не пробовал, но вариант спс.
Только большая часть проблем видимо из-за чтения файлов.
Пришлось через WScript.Shell запускать cmd и через него dir. Улыбка не айс, а вариантов не нашел пока Печаль
  

1с++     3.2.4.1
Formex  2.0.5.99b
Наверх
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Сканирование папок на предмет файлов
Ответ #6 - 10. Сентября 2014 :: 06:47
Печать  
так что ле сделал ?

Код
Выбрать все
СтрокаКоманды = "cmd.exe /c dir блаблабла";
whs = СоздатьОбъект("WScript.Shell");
whs.Run(СтрокаКоманды,0,1); 



вполне нормально, если права на cmd есть
  
Наверх
 
IP записан
 
pavlo
1c++ donor
1c++ power user
Отсутствует



Сообщений: 712
Местоположение: г. Новосибирск
Зарегистрирован: 10. Ноября 2006
Пол: Мужской
Re: Сканирование папок на предмет файлов
Ответ #7 - 10. Сентября 2014 :: 08:14
Печать  
я выше написал что так и сделал Улыбка
Но кстати еще виду тесты, но НайтиПервыйФайл("*.ext") и т.д. работает так же как dir Улыбка А вот если там файлов ровно столько сколько и без маски то FSO выигрывыет Улыбка
  

1с++     3.2.4.1
Formex  2.0.5.99b
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать