![]() |
[решено] Рекурсивный поиск файла
Поиск файла выполняется при помощи функции, и выполняется очень долго. Возможно ли реализовать поиск файла в каталогах и подкаталогах другим способом - более быстрым?
Код:
Func _FindFiles($sRoot, $sFile) Код:
Func FileSearch($sPath, $sFileSrh) ;путь к каталогу и имя файла Можно ли организовать поиск файла через WinAPI? |
Мне понадобилось запустить все регфайлы в @ScriptDir & "\*\*\*....... рекурсивноооо
Как всегда ничего приличного не нашёл и был очень зол :) Заодно поглядел что есть из файнд файл и примеров гугл, и там тоже громадные скрипты для такой простой задачи. :\ Хотя понмиаю, это у меня прстая задача, конечно там видимо что-то более серьёзное... ?? |
Код:
#include <Array.au3> Цитата:
|
Такс, коллекция скриптов с рекурсивным поиском пополняется. первыми двумя способами файл ищется 14-16 сек, последним способом 49-52 о_О
|
Цитата:
P.S А имя файла точное, или нужен поиск по маске? Возможно замедление из за поиска используя регулярные выражения. |
имя файла задаю полное, файл в папках существует такой только один. виндовым поиском ищет до 10 сек
|
забросил поиск решения об быстром поиске файла. Подскажите как остановить функцию поиска файла после того как файл найден, потому как при нахождении файла функция продолжает сканировать остальные папки.
|
Цитата:
Код:
#Include <File.au3> |
Цитата:
Код:
#include <array.au3> |
работает пасиба
|
Цитата:
|
Можно значительно ускорить поиск файлов, если избавиться от рекурсии.
Много времени уходит на многочисленный вызов функции. |
Цитата:
Код:
$sFile = _FileSearch(@DesktopDir, "test.txt") |
Цитата:
Код:
#Include <Array.au3> |
Будте любезны зделайте мне этот пример по типам *.reg и с запуском $regfiles /s
И не ругайтесь, что я встреваю, но не понял что ищете все файлы ($includeFilter='*.txt,*.htm') чтоли? Зделайте по типам! (GUI вывод мне не нужен...) |
Цитата:
Код:
$path = @ScriptDir в переменной $path указать, где искать файлы. |
Цитата:
Код:
#include <Array.au3> :) |
Creat0R,
Вот время работы Вашей функции у меня 376.28 - Супер!!! Результат функции от asdf8 1763.56 PS Рано еще списывать командную строку. |
Цитата:
второй прогон 3680.5 для моей функции: первый прогон 4667.5 второй прогон 1587.21 Интересно - можно еще быстрее? |
|
Цитата:
|
Цитата:
Есть программка FindOnClick, которая ищет файлы на порядок быстрее всего того, что я вообще видел. Думал, может кто знает, как? |
Присоединяюсь к вопросу asdf8.
FindOnClick действительно очень быстро ищет файлы. |
Вам нужна скорость, покурите функций _FileListToArray* из темы на оф. форуме: Improvement of included _FileListToArray function
Там было предложено немало хороших улучшений. |
Цитата:
|
Windows 7 x64 Ultimate. Поиск @WindowsDir, "*.*":
Вариант asdf8 из этого поста 17590 мсек и находит 66247 файлов. Вариант Creat0R из этого поста 3828 мсек и находит 81241 файлов. TotalCommander 7.50a (включено отображение скрытых файлов) находит 64237 файлов и 14557 папок за 34 секунды. ViewFD 2.4.3.0 (дефолтовые опции) находит 64240 файлов за 2 секунды. Проводник 76757 объектов При включенном отображении скрытых файлов - 76908 При включенном отображении скрытых и системных файлов - 77054 SearchMyFiles 1.37 от NirSoft.net - 64243 файла и 14525 папок. ЗЫ: тестил в таком же порядке, в котором отписал. |
Цитата:
Цитата:
|
Цитата:
Просто заметил, что файловые менеджеры и SearchMyFiles возвращают примерно одинаковое кол-во файлов (м/у запусками немного различается), твой вариант выдает больше всего файлов, а вот вариант asdf8 как-то не вписывается в общую картину. У проводника Виндовс вообще свои соображения на сей счет, только ему известные. :) |
По моим наблюдениям, самый быстрый поиск файлов, это поиск напрямую через файловую систему раздела - такая функция есть у большинства продвинутых утилит для востановления удаленных(поврежденных) файлов, правда по скорости чтения они тоже показывают разные результаты...
|
Creat0R,
Цитата:
На скриншоте ˜Ё«®ў - это юзер русскими буквами, ђ*Ў®зЁ© бв®« - Рабочий стол. Почему, не понятно? |
К сожалению, такой способ не сработает, поскольку несмотря на то, что chcp выполнится, и кодовая страница сменится…
|
Цитата:
|
Iska,
Creat0R, Значит я был прав насчет Encoding_UDF. А то я расстроился, думал опять руки кривые. |
Цитата:
Creat0R, если не сложно, приведите Ваш код, как Вы пробовали. |
Цитата:
Код:
$sBat = _ Код:
#include <Array.au3> |
расширеный поиск (?)
есть - ф-ция у Креатора,мне она очень понравилась.Но в чем проблема...
Код:
Func _FileSearch($sPath, $sMask="*") для чего мне это : хочетса сделать архив,в котором будут все найдены файлы с полными путями. потому что пока вот что получилось... : Код:
FileCopy(_FileSearch("c:\","test.ini"),"c:\temp.ini") но это не очень удачливо просто . может ктото , чтото посоветует..) ,kkkkkkkk |
80971815772, в оригинале эта функция таки возвращала полный список:
Код:
#include <Array.au3> |
Цитата:
Код:
#include <Array.au3> |
|
amel27,
Creat0R, Объясните, пожалуйста, про ключ /U . В справках ничего про него не нашел. |
Цитата:
Код:
cmd.exe /? |
вобще-то в консоли можно задать почти любую кодировку:
Код:
"cmd.exe chcp 65001" (utf-8) |
Цитата:
|
Цитата:
|
Цитата:
Разное - [решено] Сбилась кодировка командной строки |
amel27, у меня этих проблем с ветками в реестре не было - chсp выдавало кодовую страницу 866...
изменив значение параметра "CodePage" на "4e3" (кодовая страница 1251) AutoIT берет с буфера STDOUT вместо OEM - ANSI!!! :yes: Потом проверял с поменяв значение на "fde9": и на MsgBox() и на записи в файл в кодировке ANSI - выводит знакомые ютээфовские крякозяблы типа Код:
Содержимое |
Цитата:
Цитата:
|
|
Время: 01:27. |
Время: 01:27.
© OSzone.net 2001-