#Region - TimeStamp ; 2012-05-20 20:17:50 v 0.1 #EndRegion - TimeStamp ;=============================================================================== ; Function Name....: _GetFolderInRelativeDepth ; Description......: Gibt alle Ordner (kpl. Pfade, od. nur Ordnername) in relativer Tiefe zum übergebenen Ordner zurück ; Parameter(s).....: $_sRootFolder Pfad unterhalb dem gesucht werden soll ; .................: $_iDepth Pfadebene unterhalb des Startordners ; .................: $fFullPath 1=Rückgabe der kpl. Ordnerpfade (Standard), 0=nur Ordnernamen ; Return Value(s)..: Erfolg Array mit den Ordner(Pfaden) der Ebene ; .................: Fehler 0, @error=1 (keine Ordner in dieser Ebene) ; Author(s)........: BugFix ( bugfix@autoit.de ) ;=============================================================================== Func _GetFolderInRelativeDepth($_sRootFolder, $_iDepth, $fFullPath=1) Local $sFound, $hSearch = FileFindFirstFile($_sRootFolder & '\*.*'), $iRow = $_iDepth-1 If $_iDepth < 2 Then $iRow = 2 Local $aFolder[$iRow][2] = [[1]], $sOut = '', $iCurrDepth = 0, $i While True $sFound = FileFindNextFile($hSearch) If @error Then ExitLoop If StringInStr(FileGetAttrib($sFound), 'D') Then If $_iDepth = 1 Then If $fFullPath Then $sOut &= $_sRootFolder & '\' & $sFound & Chr(0) Else $sOut &= $sFound & Chr(0) EndIf Else ReDim $aFolder[$iRow][$aFolder[$iCurrDepth][0] +1] $aFolder[$iCurrDepth][0] += 1 ; == UBound in dieser Zeile $aFolder[$iCurrDepth][$aFolder[$iCurrDepth][0] -1] = $_sRootFolder & '\' & $sFound EndIf EndIf WEnd If $_iDepth = 1 Then If $sOut = '' Then Return SetError(1,0,0) Return StringSplit(StringTrimRight($sOut, 1), Chr(0)) EndIf For $i = 0 To UBound($aFolder) -2 ; == Ordnerebene über Zieltiefe For $j = 0 To UBound($aFolder,2) -1 If $aFolder[$i][$j] = '' Then ExitLoop $hSearch = FileFindFirstFile($aFolder[$i][$j] & '\*.*') While True $sFound = FileFindNextFile($hSearch) If @error Then ExitLoop If StringInStr(FileGetAttrib($aFolder[$i][$j] & '\' & $sFound), 'D') Then If $aFolder[$i][0] = UBound($aFolder,2) Then ReDim $aFolder[$iRow][$aFolder[$i][0] +1] $aFolder[$i][0] += 1 EndIf EndIf WEnd Next Next $i = UBound($aFolder) -1 For $j = 0 To UBound($aFolder,2) -1 If $aFolder[$i][$j] = '' Then ExitLoop $hSearch = FileFindFirstFile($aFolder[$i][$j] & '\*.*') While True $sFound = FileFindNextFile($hSearch) If @error Then ExitLoop If StringInStr(FileGetAttrib($aFolder[$i][$j] & '\' & $sFound), 'D') Then If $fFullPath Then $sOut &= $aFolder[$i][$j] & '\' & $sFound & Chr(0) Else $sOut &= $sFound & Chr(0) EndIf EndIf WEnd Next If $sOut = '' Then Return SetError(1,0,0) Return StringSplit(StringTrimRight($sOut, 1), Chr(0)) EndFunc ;==>_GetFolderInRelativeDepth