|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Рекурсивный поиск файла |
|
|
[решено] Рекурсивный поиск файла
|
Новый участник Сообщения: 31 |
Профиль | Отправить PM | Цитировать
Поиск файла выполняется при помощи функции, и выполняется очень долго. Возможно ли реализовать поиск файла в каталогах и подкаталогах другим способом - более быстрым?
Func _FindFiles($sRoot, $sFile) Local $FileList $FileList = _FileListToArray($sRoot, $sFile, 1) If Not @error Then For $i = 1 To $FileList[0] $filename2 = StringMid($Filelist[$i],StringInStr($Filelist[$i],"\",0,-1)+ 1) MsgBox(64,"",$filename2) Next EndIf $FileList = _FileListToArray($sRoot, '*', 2) If Not @error Then For $i = 1 To $FileList[0] _FindFiles($sRoot & '\' & $FileList[$i], $sFile) Next EndIf EndFunf Func FileSearch($sPath, $sFileSrh) ;путь к каталогу и имя файла Local $sFile, $Search, $sRes = "" While 1 $Search = FileFindFirstFile($sPath & "\" & $sFileSrh) If @error Then Return "" While 1 $sFile = FileFindNextFile($Search) If @error Then ExitLoop $sFile = $sPath & "\" & $sFile If StringInStr(FileGetAttrib($sFile), "D") > 0 Then ContinueLoop $sRes = $sFile MsgBox(64,"",$sRes) WEnd FileClose($Search) $Search = FileFindFirstFile($sPath & "\*.*") If @error Then ExitLoop While 1 $sFile = FileFindNextFile($Search) If @error Then ExitLoop $sFile = $sPath & "\" & $sFile If StringInStr(FileGetAttrib($sFile), "D") = 0 Then ContinueLoop $sRes = FileSearch($sFile, $sFileSrh) If $sRes <> "" Then ExitLoop 2 WEnd ExitLoop WEnd FileClose($Search) Return $sRes EndFunc Можно ли организовать поиск файла через WinAPI? |
|
Отправлено: 10:37, 20-01-2010 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата asdf8:
|
|
Отправлено: 12:47, 22-01-2010 | #21 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 27
|
Профиль | Отправить PM | Цитировать Цитата Creat0R:
Есть программка FindOnClick, которая ищет файлы на порядок быстрее всего того, что я вообще видел. Думал, может кто знает, как? |
|
Отправлено: 13:58, 22-01-2010 | #22 |
Ветеран Сообщения: 812
|
Профиль | Отправить PM | Цитировать Присоединяюсь к вопросу asdf8.
FindOnClick действительно очень быстро ищет файлы. |
Отправлено: 14:40, 22-01-2010 | #23 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Вам нужна скорость, покурите функций _FileListToArray* из темы на оф. форуме: Improvement of included _FileListToArray function
Там было предложено немало хороших улучшений. |
------- Отправлено: 17:56, 22-01-2010 | #24 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата asdf8:
|
|
------- Отправлено: 18:34, 22-01-2010 | #25 |
Новый участник Сообщения: 46
|
Профиль | Отправить PM | Цитировать 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 папок. ЗЫ: тестил в таком же порядке, в котором отписал. |
Отправлено: 19:03, 22-01-2010 | #26 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата timsky:
Цитата timsky:
|
||
------- Отправлено: 20:23, 22-01-2010 | #27 |
Новый участник Сообщения: 46
|
Профиль | Отправить PM | Цитировать Цитата Creat0R:
Просто заметил, что файловые менеджеры и SearchMyFiles возвращают примерно одинаковое кол-во файлов (м/у запусками немного различается), твой вариант выдает больше всего файлов, а вот вариант asdf8 как-то не вписывается в общую картину. У проводника Виндовс вообще свои соображения на сей счет, только ему известные. |
|
Отправлено: 03:07, 23-01-2010 | #28 |
Пользователь Сообщения: 60
|
Профиль | Отправить PM | Цитировать По моим наблюдениям, самый быстрый поиск файлов, это поиск напрямую через файловую систему раздела - такая функция есть у большинства продвинутых утилит для востановления удаленных(поврежденных) файлов, правда по скорости чтения они тоже показывают разные результаты...
|
Отправлено: 22:04, 24-01-2010 | #29 |
Ветеран Сообщения: 812
|
Профиль | Отправить PM | Цитировать Creat0R,
Цитата Creat0R:
На скриншоте ˜Ё«®ў - это юзер русскими буквами, ђ*Ў®зЁ© бв®« - Рабочий стол. Почему, не понятно? |
|
Последний раз редактировалось madmasles, 05-03-2010 в 13:25. Отправлено: 19:12, 04-02-2010 | #30 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] Поиск файла на компьютере | sashadeg | AutoIt | 12 | 30-01-2010 18:40 | |
Разное - [решено] Поиск по типу файла | 7human7 | Microsoft Windows 7 | 2 | 25-11-2009 09:51 | |
Интерфейс - [решено] Быстрый поиск | TEMA5 | Microsoft Windows 7 | 7 | 07-10-2009 20:42 | |
CMD/BAT - [решено] Как скопировать имя файла из текстового файла в код батника и т.д. | Nun-Nun | Скриптовые языки администрирования Windows | 6 | 13-05-2009 13:28 | |
Разное - [решено] поиск файлов | zai | Microsoft Windows 2000/XP | 20 | 07-10-2007 14:18 |
|