vicbox777
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Jebernau 13:20 18-08-2009 Цитата: Добрый день, как можно организовать поиск файла по всей системе? | Вот пример из форума: Код: #include <File.au3> #include <Array.au3> $PathForSearch = @HomeDrive $FileToFind = "explorer.exe" HotKeySet("{Esc}","_Exit") ProgressOn("Please wait...", "Getting Folders Structure...", $PathForSearch, -1, -1, 16) $SearchResults = _FileFind($PathForSearch, $FileToFind) ProgressOff() If $SearchResults <> -1 Then MsgBox(262144+64, "Done!", "File <" & $FileToFind & "> was found in this path <" & $SearchResults ) Else MsgBox(262144+48, "Attention!", "File <" & $FileToFind & "> was not found on <" & $PathForSearch & "> and it subfolders." & @CR & @CR & "OK ---> EXIT") EndIf Func _FileFind($Path, $FileToFind) Local $RetPath = $Path If FileExists($Path & "\" & $FileToFind) Then Return $Path $SubFoldersArr = _DirListToArray($Path) If IsArray($SubFoldersArr) Then $PrgrsDelim = 100 / $SubFoldersArr[0] $Prgrrs = $PrgrsDelim ProgressSet($Prgrrs, $Path, "Search for <" & $FileToFind & "> is in process...") For $iF = 1 To $SubFoldersArr[0] ProgressSet($Prgrrs, $SubFoldersArr[$iF]) $Prgrrs = $Prgrrs + $PrgrsDelim If FileExists($SubFoldersArr[$iF] & "\" & $FileToFind) Then $RetPath = $SubFoldersArr[$iF] ExitLoop EndIf Next EndIf If $RetPath <> $Path Then Return $RetPath Else Return -1 EndIf EndFunc Func _DirListToArray ($sPath) Local $i, $j, $rlist[1]=[0], $blist, $alist=_FileListToArray ($sPath, '*', 2) If IsArray ($alist) Then For $i=1 To $alist [0] _ArrayAdd ($rlist, $sPath & "\" & $alist [$i]) $blist = _DirListToArray ($sPath & "\" & $alist [$i]) If $blist[0] > 0 Then $PrgrsDelim = 100 / ($blist[0] + $alist[0]) $Prgrrs = $PrgrsDelim For $j=1 To $blist[0] ProgressSet($Prgrrs, $blist[$j]) $Prgrrs = $Prgrrs + $PrgrsDelim _ArrayAdd ($rlist, $blist[$j]) Next EndIf Next EndIf $rlist [0] = UBound ($rlist) - 1 Return $rlist EndFunc Func _Exit() Exit EndFunc | А вот чтоб искать на всех носителях, то используй наводку от ynbIpb, изменяя $PathForSearch = @HomeDrive. | Всего записей: 165 | Зарегистр. 17-06-2008 | Отправлено: 21:52 18-08-2009 | Исправлено: vicbox777, 21:57 18-08-2009 |
|