#include #include ;Pfad zum lokalen LFB Ordner - (dieser wird nachher benötigt um den Webpfad zu bilden) Local $localpath= "\\FRERICKST410W8\d\LFB\server" ;vom PC in den ;Local $localpath= "\\FRERICKST410W8\d\LFB\server" ;vom Notebook Local $sDirPath = @ScriptDir & "\" ; Pfad des Verzeichnisbaum (mit "\" am Ende Absicht) ;Aufruf GetFilesFolder_Rekursiv (Dokumentation unten) $ret = _GetFilesFolder_Rekursiv('.', -1,0,0) ;Anzeigen der Liste _ArrayDisplay($ret, 'Rekursiv alle Dateien') ;Definition des HTML - Codes für den LFB Downloadlink $html1 = ': Download Herunterladen ' ;Durchlaufen des Arrays For $i = 1 To UBound( $ret, 1 ) - 1 ;Aufsplitten des Pfades in die einzelnen Komponenten $filo = StringMid($ret[$i], StringInStr($ret[$i],'\',1,-1)+1) ;Dateinamen mit Endung $path =StringLeft($ret[$i], StringInStr($ret[$i],'\',1,-1)) ;Pfad (enthält den Pfad vom 1. Zeichen bis zum letzten Backslash) $suffix= StringMid($ret[$i], StringInStr($ret[$i],'.',1,-1)+1) ;Dateiendung $file=StringLeft($filo, StringInStr($filo,'.',1,-1)-1) ;Dateinamen ohne Endung ; Aufruf Unterfunktion Dateigröße $size = ByteSuffix(FileGetSize($ret[$i])) ;Konvertieren des Pfades für den Webserver $webpath = StringReplace(StringReplace(@ScriptDir,$localpath,""),"\","/") & '/' & $filo ;Schreibe in die Datei FileClose( FileWrite( FileOpen( $sDirPath & "download.html", 1 + 8 ), $file & $html1 & $webpath & $html2 & '[' & $suffix & ']' & '[' & $size & ']' & '
' & @CRLF )) Next ;================================================================================================== ; Function Name: _GetFilesFolder_Rekursiv($sPath [, $sExt='*' [, $iDir=-1 [, $iRetType=0 ,[$sDelim='0']]]]) ; 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 (Standard) ; $iDir -1 Dateien+Ordner(Standard), 0 nur Dateien, 1 nur Ordner ; optional: $iRetType 0 gibt Array, 1 gibt String zurück ; optional: $sDelim legt Trennzeichen für Stringrückgabe fest ; 0 -@CRLF (Standard) 1 -@CR 2 -@LF 3 -';' 4 -'|' ; Return Value(s): Array (Standard) od. String mit den gefundenen Pfaden der Dateien und/oder Ordner ; Array[0] enthält die Anzahl der gefundenen Dateien/Ordner ; Author(s): BugFix (bugfix@autoit.de) ;================================================================================================== Func _GetFilesFolder_Rekursiv($sPath, $sExt='*', $iDir=-1, $iRetType=0, $sDelim='0') Global $oFSO = ObjCreate('Scripting.FileSystemObject') Global $strFiles = '' Switch $sDelim Case '1' $sDelim = @CR Case '2' $sDelim = @LF Case '3' $sDelim = ';' Case '4' $sDelim = '|' Case Else $sDelim = @CRLF EndSwitch If ($iRetType < 0) Or ($iRetType > 1) Then $iRetType = 0 If $sExt = -1 Then $sExt = '*' If ($iDir < -1) Or ($iDir > 1) Then $iDir = -1 _ShowSubFolders($oFSO.GetFolder($sPath),$sExt,$iDir,$sDelim) If $iRetType = 0 Then Local $aOut $aOut = StringSplit(StringTrimRight($strFiles, StringLen($sDelim)), $sDelim, 1) If $aOut[1] = '' Then ReDim $aOut[1] $aOut[0] = 0 EndIf Return $aOut Else Return StringTrimRight($strFiles, StringLen($sDelim)) EndIf EndFunc Func _ShowSubFolders($Folder, $Ext='*', $Dir=-1, $Delim=@CRLF) If Not IsDeclared("strFiles") Then Global $strFiles = '' If ($Dir = -1) Or ($Dir = 0) Then For $file In $Folder.Files If $Ext <> '*' Then If StringRight($file.Name, StringLen($Ext)) = $Ext Then _ $strFiles &= $file.Path & $Delim Else $strFiles &= $file.Path & $Delim EndIf Next EndIf For $Subfolder In $Folder.SubFolders If ($Dir = -1) Or ($Dir = 1) Then $strFiles &= $Subfolder.Path & '\' & $Delim _ShowSubFolders($Subfolder, $Ext, $Dir, $Delim) Next EndFunc ; Diese Funktion formatiert den String zur Dateigröße Func ByteSuffix($iBytes) Local $iIndex, $aArray[9] = [' bytes', ' KB', ' MB', ' GB', ' TB', ' PB', ' EB', ' ZB', ' YB'] While $iBytes > 1023 $iIndex += 1 $iBytes /= 1024 WEnd Return Round($iBytes) & $aArray[$iIndex] EndFunc ;==>ByteSuffix