Помогите найти скрипт для поиска файла на разных носителях.
В данном случае есть только такой скрипт
В данном случае есть только такой скрипт
Код:
Opt("GuiOnEventMode", 1)
Global $Progress = 0.1, $GetPath = 0
$PathForSearch = @HomeDrive
$FileToFind = "test.au3"
$Gui = GUICreate("File Finder", 300, 170, -1, -1, -1, 0x00000088)
GUISetOnEvent(-3, "ExitScript")
GUICtrlCreateLabel("Path to search on:", 20, 30)
$PathInput = GUICtrlCreateInput($PathForSearch, 20, 50, 270)
GUICtrlCreateLabel("File to find:", 20, 90)
$FileNameInput = GUICtrlCreateInput($FileToFind, 20, 110, 270)
$SearchButton = GUICtrlCreateButton("Search", 70, 140, 60, 20)
GUICtrlSetOnEvent(-1, "SearchButton")
$CancelButton = GUICtrlCreateButton("Cancel", 180, 140, 60, 20)
GUICtrlSetOnEvent(-1, "ExitScript")
GUISetState()
While 1
Sleep(100)
WEnd
Func _FindFile($Path, $FileName)
$ModPath = $Path & "\*" ; Формирую строку поиска (толко для инициализации)
$File = FileFindFirstFile($ModPath) ; Инициализация поиска
While 1
; Условие для прерывания всех циклов - чтобы быстро выйти из функции
If $GetPath <> 0 Then ExitLoop ; Прерываю циклы всех подфункций
$Get = FileFindNextFile($File)
If @error Then ExitLoop
$String = $Path & "\" & $Get ; Формирую новый путь
ProgressSet($Progress, $Path & @CR & $Get)
$Progress = $Progress + 0.1
If $Progress >= 100 Then $Progress = 0.1
If Not StringInStr(FileGetAttrib($String), "D") Then ;Если не является папкой тогда:
If $Get = $FileName Then
$GetPath = $Path
ExitLoop
EndIf
Else
_FindFile($String, $FileName) ; Запуск подфункции для поиска в подпапке
EndIf
WEnd
FileClose($File) ;Завершение инициализации
Return $GetPath
EndFunc
Func SearchButton()
If Not FileExists(GUICtrlRead($PathInput)) Then
_MsgBox(16, "Error", "You must type an existing path", $Gui)
ElseIf StringRight(GUICtrlRead($PathInput), 1) = "\" Then
_MsgBox(48, "Attention!", "The path must not have a slash (\) at the end of it.", $Gui)
ElseIf GUICtrlRead($FileNameInput) = "" Then
_MsgBox(16, "Error", "You must type a file name", $Gui)
ElseIf Not _IsFileName(GUICtrlRead($FileNameInput)) Then
_MsgBox(16, 'Error', 'The file name include an invalid characters' & @CR & '< > | ? : * / \ "', $Gui)
Else
$PathForSearch = GUICtrlRead($PathInput)
$FileToFind = GUICtrlRead($FileNameInput)
GUISetState(@SW_HIDE, $Gui)
ProgressOn("Please wait...", "Search is in progress...", $PathForSearch, -1, -1, 16)
$SearchResults = _FindFile($PathForSearch, $FileToFind)
ProgressOff()
If Not $SearchResults = 0 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
GUISetState(@SW_SHOW, $Gui)
EndIf
EndFunc
Func _IsFileName($Test)
If StringRegExp($Test, '[<>|?:"*/\\]') <> 0 Then
Return False
Else
Return True
EndIf
EndFunc
Func _MsgBox ($MsgBoxType, $MsgBoxTitle, $MsgBoxText, $mainGUI=0)
$ret = DllCall ("user32.dll", "int", "MessageBox", _
"hwnd", $mainGUI, _
"str", $MsgBoxText , _
"str", $MsgBoxTitle, _
"int", $MsgBoxType)
Return $ret [0]
EndFunc
Func ExitScript()
Exit
EndFunc