Dateiliste

  • hi,

    ich hab ein kleines Problem, ich muss dringend wissen, ob es einen Befehl gibt, der alle Dateien aus einem Ordner und dessen Unterordner in einem Array zurückgibt.

    Mit _FileListToArray() hab ich es schon versucht...hoffe das ihr mit helfen könnt ;)

    • Offizieller Beitrag
    Spoiler anzeigen
    [autoit]

    #include<Array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global $strFF_Ret = '', $strFiles = ''

    [/autoit] [autoit][/autoit] [autoit]

    $ret = _GetFilesFolder_Rekursiv('.', 'au3', 0)
    _ArrayDisplay($ret, 'Rekursiv alle au3-Dateien')

    [/autoit] [autoit][/autoit] [autoit]

    ;==================================================================================================
    ; Function Name: _GetFilesFolder_Rekursiv($sPath [, $sExt='*' [, $iDir=-1]])
    ; Description: Rekursive Auflistung von Dateien und/oder Ordnern
    ; Parameter(s): $sPath der Basispfad für die Auflistung ('.' -aktueller Pfad, '..' -Parentpfad)
    ; $sExt Erweiterung für Dateiauswahl '*' oder -1 für alle
    ; $iDir -1 Dateien+Ordner, 0 nur Dateien, 1 nur Ordner
    ; Return Value(s): Array mit den gefundenen Pfaden der Dateien und/oder Ordner
    ; Array[0] enthält die Anzahl der gefundenen Dateien/Ordner
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;==================================================================================================

    [/autoit] [autoit][/autoit] [autoit]

    Func _GetFilesFolder_Rekursiv($sPath, $sExt = '*', $iDir = -1)
    Global $oFSO = ObjCreate('Scripting.FileSystemObject')
    Local $aOut
    If $sExt = -1 Then $sExt = '*'
    If ($iDir < -1) Or ($iDir > 1) Then $iDir = -1
    _ShowSubFolders($oFSO.GetFolder($sPath), $sExt, $iDir)
    $aOut = StringSplit(StringTrimRight($strFF_Ret, 1), @LF)
    If $aOut[1] = '' Then
    ReDim $aOut[1]
    $aOut[0] = 0
    EndIf
    Return $aOut
    EndFunc ;==>_GetFilesFolder_Rekursiv

    [/autoit] [autoit][/autoit] [autoit]

    Func _ShowSubFolders($Folder, $Ext = '*', $Dir = -1)
    For $Subfolder In $Folder.SubFolders
    If ($Dir = -1) Or ($Dir = 1) Then $strFF_Ret &= $Subfolder.Path & @LF
    If ($Dir = -1) Or ($Dir = 0) Then
    $files = $Subfolder.Files
    For $file In $files
    If $Ext <> '*' Then
    If StringRight($file.Name, StringLen($Ext)) = $Ext Then _
    $strFiles &= $file.Path & @LF
    Else
    $strFiles &= $file.Path & @LF
    EndIf
    Next
    EndIf
    $strFF_Ret &= $strFiles
    $strFiles = ''
    _ShowSubFolders($Subfolder, $Ext, $Dir)
    Next
    EndFunc ;==>_ShowSubFolders

    [/autoit]
  • ok, danke erstmal, aber ich hab das mit dem Pfad nicht ganz verstanden.

    Spoiler anzeigen
    [autoit]


    $ret = _GetFilesFolder_Rekursiv('.', 'au3', 0) ; Wenn ich als Pfad "C:\Bilder" angebe, bekomme ich immer 0 zurück

    [/autoit]
  • Wie genau meinst du das?

    Also es ist einfach n Ordner auf der Festplatte mit n paar Bildern drin, hat aber keine Unterordner. Meinst du das? ;)

  • Mein AUfruf sieht genau aus wie deiner. Ich denke es liegt irgendwie am Pfad oder so. ;)

    • Offizieller Beitrag

    Hi,

    mach doch mal sowas

    [autoit]

    Global $searchPath = 'c:\Bilder'

    [/autoit][autoit][/autoit][autoit]

    If Not FileExists($searchPath) Then MsgBox(16, 'Error', 'Ähm, ... :-)', 5)
    $ret = _GetFilesFolder_Rekursiv($searchPath, '*', 0)
    _ArrayDisplay($ret, 'Rekursiv alle au3-Dateien')

    [/autoit]

    Mega

  • Also es geht leider immer noch nicht und es kommt auch keine Meldung, weil der Ordner nicht existiert.

    So sieht es jetzt aus!!!
    [autoit]

    #include<Array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global $strFF_Ret = '', $strFiles = ''
    Global $searchPath = 'c:\VZ'

    [/autoit] [autoit][/autoit] [autoit]

    If Not FileExists($searchPath) Then MsgBox(16, 'Error', 'Ähm, ... :-)', 5)
    $ret = _GetFilesFolder_Rekursiv($searchPath, '*', 0)
    _ArrayDisplay($ret, 'Rekursiv alle au3-Dateien')

    [/autoit] [autoit][/autoit] [autoit]

    ;==================================================================================================
    ; Function Name: _GetFilesFolder_Rekursiv($sPath [, $sExt='*' [, $iDir=-1]])
    ; Description: Rekursive Auflistung von Dateien und/oder Ordnern
    ; Parameter(s): $sPath der Basispfad für die Auflistung ('.' -aktueller Pfad, '..' -Parentpfad)
    ; $sExt Erweiterung für Dateiauswahl '*' oder -1 für alle
    ; $iDir -1 Dateien+Ordner, 0 nur Dateien, 1 nur Ordner
    ; Return Value(s): Array mit den gefundenen Pfaden der Dateien und/oder Ordner
    ; Array[0] enthält die Anzahl der gefundenen Dateien/Ordner
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;==================================================================================================

    [/autoit] [autoit][/autoit] [autoit]

    Func _GetFilesFolder_Rekursiv($sPath, $sExt = '*', $iDir = -1)
    Global $oFSO = ObjCreate('Scripting.FileSystemObject')
    Local $aOut
    If $sExt = -1 Then $sExt = '*'
    If ($iDir < -1) Or ($iDir > 1) Then $iDir = -1
    _ShowSubFolders($oFSO.GetFolder($sPath), $sExt, $iDir)
    $aOut = StringSplit(StringTrimRight($strFF_Ret, 1), @LF)
    If $aOut[1] = '' Then
    ReDim $aOut[1]
    $aOut[0] = 0
    EndIf
    Return $aOut
    EndFunc ;==>_GetFilesFolder_Rekursiv

    [/autoit] [autoit][/autoit] [autoit]

    Func _ShowSubFolders($Folder, $Ext = '*', $Dir = -1)
    For $Subfolder In $Folder.SubFolders
    If ($Dir = -1) Or ($Dir = 1) Then $strFF_Ret &= $Subfolder.Path & @LF
    If ($Dir = -1) Or ($Dir = 0) Then
    $files = $Subfolder.Files
    For $file In $files
    If $Ext <> '*' Then
    If StringRight($file.Name, StringLen($Ext)) = $Ext Then _
    $strFiles &= $file.Path & @LF
    Else
    $strFiles &= $file.Path & @LF
    EndIf
    Next
    EndIf
    $strFF_Ret &= $strFiles
    $strFiles = ''
    _ShowSubFolders($Subfolder, $Ext, $Dir)
    Next
    EndFunc ;==>_ShowSubFolders

    [/autoit]