Hallöchen,
bei einem post hier im Forum ist mir die Idee gekommen, eine Funktion zu schreiben,
welche alle Dateien und Unterordner in einem bestimmten Ordner auflistet.
Hier also die Funktion
Spoiler anzeigen
#include <File.au3>
;===============================================================================
;
; Function Name: _Listall
; Description:: List all Files und Subdirs from given path (Currently a maximum of 8 subfolders deep)
; Parameter(s): $Path = Path to search in
; $Dironly = Only look for DirNames
; $Search = part of a Filename to search for
; $Firstfound = Only return first filename matching $Search
; Requirement(s):
; Return Value(s): An 2-dimensional Array when looking for Files
; - $return[0][0] count of Files or Matches
; - $return[$i][0] Folder
; - $return[$i][1] Filename
; An 1-dimensional Array when looking for Folders
; - $Return[0] count of Folders
;
; Author(s): TheLuBu <[email='LuBu@veytal.com'][/email]>
;
;===============================================================================
Func _Listall($Path, $Dironly = FALSE, $Search = FALSE, $Firstfound = FALSE)
$Timer = TimerInit()
Local $Alldat[1500000][2]
Local $Alldir[1500000]
$Alldir[1] = ""
$dirrow = 1
$Ordner = _FileListToArray($Path, "*", 2)
If IsArray($Ordner) Then
For $i = 1 To $Ordner[0]
$dirrow += 1
$Alldir[$dirrow] = "\" & $Ordner[$i]
$SubOrdner1 = _FileListToArray($Path & "\" & $Ordner[$i], "*", 2)
If Not IsArray($SubOrdner1) Then ContinueLoop
For $j = 1 To $SubOrdner1[0]
$dirrow += 1
$Alldir[$dirrow] = "\" & $Ordner[$i] & "\" & $SubOrdner1[$j]
$SubOrdner2 = _FileListToArray($Path & "\" & $Ordner[$i] & "\" & $SubOrdner1[$j], "*", 2)
If Not IsArray($SubOrdner2) Then ContinueLoop
For $k = 1 To $SubOrdner2[0]
$dirrow += 1
$Alldir[$dirrow] = "\" & $Ordner[$i] & "\" & $SubOrdner1[$j] & "\" & $SubOrdner2[$k]
$SubOrdner3 = _FileListToArray($Path & "\" & $Ordner[$i] & "\" & $SubOrdner1[$j] & "\" & $SubOrdner2[$k], "*", 2)
If Not IsArray($SubOrdner3) Then ContinueLoop
For $l = 1 To $SubOrdner3[0]
$dirrow += 1
$Alldir[$dirrow] = "\" & $Ordner[$i] & "\" & $SubOrdner1[$j] & "\" & $SubOrdner2[$k] & "\" & $SubOrdner3[$l]
$SubOrdner4 = _FileListToArray($Path & "\" & $Ordner[$i] & "\" & $SubOrdner1[$j] & "\" & $SubOrdner2[$k] & "\" & $SubOrdner3[$l], "*", 2)
If Not IsArray($SubOrdner4) Then ContinueLoop
For $m = 1 To $SubOrdner4[0]
$dirrow += 1
$Alldir[$dirrow] = "\" & $Ordner[$i] & "\" & $SubOrdner1[$j] & "\" & $SubOrdner2[$k] & "\" & $SubOrdner3[$l] & "\" & $SubOrdner4[$m]
$SubOrdner5 = _FileListToArray($Path & "\" & $Ordner[$i] & "\" & $SubOrdner1[$j] & "\" & $SubOrdner2[$k] & "\" & $SubOrdner3[$l] & "\" & $SubOrdner4[$m], "*", 2)
If Not IsArray($SubOrdner5) Then ContinueLoop
For $n = 1 To $SubOrdner5[0]
$dirrow += 1
$Alldir[$dirrow] = "\" & $Ordner[$i] & "\" & $SubOrdner1[$j] & "\" & $SubOrdner2[$k] & "\" & $SubOrdner3[$l] & "\" & $SubOrdner4[$m] & "\" & $SubOrdner5[$n]
$SubOrdner6 = _FileListToArray($Path & "\" & $Ordner[$i] & "\" & $SubOrdner1[$j] & "\" & $SubOrdner2[$k] & "\" & $SubOrdner3[$l] & "\" & $SubOrdner4[$m] & "\" & $SubOrdner5[$n], "*", 2)
If Not IsArray($SubOrdner6) Then ContinueLoop
For $o = 1 To $SubOrdner6[0]
$dirrow += 1
$Alldir[$dirrow] = "\" & $Ordner[$i] & "\" & $SubOrdner1[$j] & "\" & $SubOrdner2[$k] & "\" & $SubOrdner3[$l] & "\" & $SubOrdner4[$m] & "\" & $SubOrdner5[$n] & "\" & $SubOrdner6[$o]
$SubOrdner7 = _FileListToArray($Path & "\" & $Ordner[$i] & "\" & $SubOrdner1[$j] & "\" & $SubOrdner2[$k] & "\" & $SubOrdner3[$l] & "\" & $SubOrdner4[$m] & "\" & $SubOrdner5[$n] & "\" & $SubOrdner6[$o], "*", 2)
If Not IsArray($SubOrdner7) Then ContinueLoop
For $p = 1 To $SubOrdner7[0]
$dirrow += 1
$Alldir[$dirrow] = "\" & $Ordner[$i] & "\" & $SubOrdner1[$j] & "\" & $SubOrdner2[$k] & "\" & $SubOrdner3[$l] & "\" & $SubOrdner4[$m] & "\" & $SubOrdner5[$n] & "\" & $SubOrdner6[$o] & "\" & $SubOrdner7[$p]
$SubOrdner8 = _FileListToArray($Path & "\" & $Ordner[$i] & "\" & $SubOrdner1[$j] & "\" & $SubOrdner2[$k] & "\" & $SubOrdner3[$l] & "\" & $SubOrdner4[$m] & "\" & $SubOrdner5[$n] & "\" & $SubOrdner6[$o] & "\" & $SubOrdner7[$p], "*", 2)
If Not IsArray($SubOrdner8) Then ContinueLoop
For $q = 1 To $SubOrdner8[0]
$dirrow += 1
$Alldir[$dirrow] = "\" & $Ordner[$i] & "\" & $SubOrdner1[$j] & "\" & $SubOrdner2[$k] & "\" & $SubOrdner3[$l] & "\" & $SubOrdner4[$m] & "\" & $SubOrdner5[$n] & "\" & $SubOrdner6[$o] & "\" & $SubOrdner7[$p] & "\" & $SubOrdner8[$q]
;~ $SubOrdner9 = _FileListToArray($Path & "\" & $Ordner[$i] & "\" & $SubOrdner1[$j] & "\" & $SubOrdner2[$k] & "\" & $SubOrdner3[$l] & "\" & $SubOrdner4[$m] & "\" & $SubOrdner5[$n] & "\" & $SubOrdner6[$o]& "\" & $SubOrdner7[$p]& "\" & $SubOrdner8[$q], "*", 2)
Next
Next
Next
Next
Next
Next
Next
Next
Next
EndIf
ReDim $Alldir[$dirrow + 1]
$Alldir[0] = UBound($Alldir) - 1
If Not $Dironly = FALSE Then Return $Alldir
$row = 0
For $i = 1 To $Alldir[0]
$Dats = _FileListToArray($Path & $Alldir[$i], "*", 1)
If Not IsArray($Dats) Then ContinueLoop
For $k = 1 To $Dats[0]
If Not $Search = FALSE Then
If Stringinstr($Dats[$k], $Search, 2) <> 0 Then
$row += 1
$Alldat[$row][0] = $Path & $Alldir[$i]
$Alldat[$row][1] = $Dats[$k]
If $Firstfound = TRUE Then Exitloop(2)
ConsoleWrite($Path & $Alldir[$i]&"\"& $Dats[$k] & @CRLF )
EndIf
Else
$row += 1
$Alldat[$row][0] = $Path & $Alldir[$i]
$Alldat[$row][1] = $Dats[$k]
EndIf
Next
Next
ReDim $Alldat[$row + 1][2]
$Alldat[0][0] = UBound($Alldat) - 1
$Diff = TimerDiff($Timer)
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $Diff = ' & $Diff / 1000 & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
Return $Alldat
EndFunc
Derzeit durchsucht er den Ordner plus maximal 8 unterordner nach Dateien. Es kann nach bestimmten Dateien gesucht werden, oder auch nur alle Ordner aufgelistet werden.
Über Rückmeldungen würde ich mich freuen