Jump to content

Wild cards with file paths


Recommended Posts

Try this my function to search files:

#include <Array.au3> ;Only for _ArrayDisplay()

$sPath = @MyDocumentsDir

$Results = _FileFind($sPath, "*.xml", 1)
If @error = 3 Then
    MsgBox(48, "Attention", "No files found.")
Else
    _ArrayDisplay($Results)
EndIf

;Flag = 1 search with recurse
;Flag <> 1 search without recurse
;On Failure return @error as following:
;   1 - $sPath is not a dir or it not exists (in this case returned -1 as well).
;   2 - $sPath is empty dir.
;   3 - No files found in $sPath dir.
;
;On Seccess return array with founded files.
Func _FileFind($sPath, $Mask, $Flag=0)
    If Not StringInStr(FileGetAttrib($sPath), "D") Then Return SetError(1, 0, -1)
    
    Local $RetPathArr[1], $FindNextFile, $CurrentPath, $SubDirFindArr, $Ubound = 0
    If StringInStr($Mask, "*") Then $Mask = StringReplace($Mask, "*.", "")
    
    $sPath = StringRegExpReplace($sPath, '\\+ *$', '\')
    
    Local $FindFirstFile = FileFindFirstFile($sPath & "\*.*")
    If @error = 1 Then Return SetError(2, 0, 0)
    If $FindFirstFile = -1 Then Return SetError(3, 0, 0)
    
    While 1
        $FindNextFile = FileFindNextFile($FindFirstFile)
        If @error = 1 Then ExitLoop
        $CurrentPath = $sPath & "\" & $FindNextFile
        If $Flag = 1 And StringInStr(FileGetAttrib($CurrentPath), "D") Then
            $SubDirFindArr = _FileFind($CurrentPath, $Mask, $Flag)
            If IsArray($SubDirFindArr) Then
                For $i = 1 To UBound($SubDirFindArr)-1
                    $Ubound = UBound($RetPathArr)
                    ReDim $RetPathArr[$Ubound+1]
                    $RetPathArr[$Ubound] = $SubDirFindArr[$i]
                Next
            EndIf
        Else
            If $Mask = "*" Or $FindNextFile = $Mask Or StringRegExpReplace($CurrentPath, '^.*\.', '') = $Mask Then
                $Ubound = UBound($RetPathArr)
                ReDim $RetPathArr[$Ubound+1]
                $RetPathArr[$Ubound] = $CurrentPath
            EndIf
        EndIf
    WEnd
    FileClose($FindFirstFile)
    
    If $Ubound = 0 Then Return SetError(3, 0, 0)
    $RetPathArr[0] = $Ubound
    Return $RetPathArr
EndFunc

 

Spoiler

Using OS: Win 7 Professional, Using AutoIt Ver(s): 3.3.6.1 / 3.3.8.1

AutoIt_Rus_Community.png AutoIt Russian Community

My Work...

Spoiler

AutoIt_Icon_small.pngProjects: ATT - Application Translate Tool {new}| BlockIt - Block files & folders {new}| SIP - Selected Image Preview {new}| SISCABMAN - SciTE Abbreviations Manager {new}| AutoIt Path Switcher | AutoIt Menu for Opera! | YouTube Download Center! | Desktop Icons Restorator | Math Tasks | KeyBoard & Mouse Cleaner | CaptureIt - Capture Images Utility | CheckFileSize Program

AutoIt_Icon_small.pngUDFs: OnAutoItErrorRegister - Handle AutoIt critical errors {new}| AutoIt Syntax Highlight {new}| Opera Library! | Winamp Library | GetFolderToMenu | Custom_InputBox()! | _FileRun UDF | _CheckInput() UDF | _GUIInputSetOnlyNumbers() UDF | _FileGetValidName() UDF | _GUICtrlCreateRadioCBox UDF | _GuiCreateGrid() | _PathSplitByRegExp() | _GUICtrlListView_MoveItems - UDF | GUICtrlSetOnHover_UDF! | _ControlTab UDF! | _MouseSetOnEvent() UDF! | _ProcessListEx - UDF | GUICtrl_SetResizing - UDF! | Mod. for _IniString UDFs | _StringStripChars UDF | _ColorIsDarkShade UDF | _ColorConvertValue UDF | _GUICtrlTab_CoverBackground | CUI_App_UDF | _IncludeScripts UDF | _AutoIt3ExecuteCode | _DragList UDF | Mod. for _ListView_Progress | _ListView_SysLink | _GenerateRandomNumbers | _BlockInputEx | _IsPressedEx | OnAutoItExit Handler | _GUICtrlCreateTFLabel UDF | WinControlSetEvent UDF | Mod. for _DirGetSizeEx UDF
 
AutoIt_Icon_small.pngExamples: 
ScreenSaver Demo - Matrix included | Gui Drag Without pause the script | _WinAttach()! | Turn Off/On Monitor | ComboBox Handler Example | Mod. for "Thinking Box" | Cool "About" Box | TasksBar Imitation Demo

Like the Projects/UDFs/Examples? Please rate the topic (up-right corner of the post header: Rating AutoIt_Rating.gif)

* === My topics === *

==================================================
My_Userbar.gif
==================================================

 

 

 

AutoIt is simple, subtle, elegant. © AutoIt Team

Link to comment
Share on other sites

Now if the file starts with something, but i do not know the ending of it..

Try this, should work:

$Results = _FileFind($sPath, "Name Of something*.xml", 1)

 

Spoiler

Using OS: Win 7 Professional, Using AutoIt Ver(s): 3.3.6.1 / 3.3.8.1

AutoIt_Rus_Community.png AutoIt Russian Community

My Work...

Spoiler

AutoIt_Icon_small.pngProjects: ATT - Application Translate Tool {new}| BlockIt - Block files & folders {new}| SIP - Selected Image Preview {new}| SISCABMAN - SciTE Abbreviations Manager {new}| AutoIt Path Switcher | AutoIt Menu for Opera! | YouTube Download Center! | Desktop Icons Restorator | Math Tasks | KeyBoard & Mouse Cleaner | CaptureIt - Capture Images Utility | CheckFileSize Program

AutoIt_Icon_small.pngUDFs: OnAutoItErrorRegister - Handle AutoIt critical errors {new}| AutoIt Syntax Highlight {new}| Opera Library! | Winamp Library | GetFolderToMenu | Custom_InputBox()! | _FileRun UDF | _CheckInput() UDF | _GUIInputSetOnlyNumbers() UDF | _FileGetValidName() UDF | _GUICtrlCreateRadioCBox UDF | _GuiCreateGrid() | _PathSplitByRegExp() | _GUICtrlListView_MoveItems - UDF | GUICtrlSetOnHover_UDF! | _ControlTab UDF! | _MouseSetOnEvent() UDF! | _ProcessListEx - UDF | GUICtrl_SetResizing - UDF! | Mod. for _IniString UDFs | _StringStripChars UDF | _ColorIsDarkShade UDF | _ColorConvertValue UDF | _GUICtrlTab_CoverBackground | CUI_App_UDF | _IncludeScripts UDF | _AutoIt3ExecuteCode | _DragList UDF | Mod. for _ListView_Progress | _ListView_SysLink | _GenerateRandomNumbers | _BlockInputEx | _IsPressedEx | OnAutoItExit Handler | _GUICtrlCreateTFLabel UDF | WinControlSetEvent UDF | Mod. for _DirGetSizeEx UDF
 
AutoIt_Icon_small.pngExamples: 
ScreenSaver Demo - Matrix included | Gui Drag Without pause the script | _WinAttach()! | Turn Off/On Monitor | ComboBox Handler Example | Mod. for "Thinking Box" | Cool "About" Box | TasksBar Imitation Demo

Like the Projects/UDFs/Examples? Please rate the topic (up-right corner of the post header: Rating AutoIt_Rating.gif)

* === My topics === *

==================================================
My_Userbar.gif
==================================================

 

 

 

AutoIt is simple, subtle, elegant. © AutoIt Team

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...