Hallo Autoit Experten.
Nachdem mir UserIsGratefull so wunderbar geholfen hat nun der nächste Baustein zu meiner Rundum-Glücklich Lösung im Bereich automatisierte Webseitenerstellung-
Die Dateien eines Ordners (der wiederum auch Unterordner erhält) soll als Downloadliste aufbereitet werden.
Alle Datein die dort liegen sollen aufgelistet werden und mit Ihrer Dateigröße html-mäßig so aufbereitet werden, daß ich es nur noch auf unseren Server uploaden muss.
Ich habe mir dazu im Forum geeignete Codeschnipsel zusammengesucht und zusammengebastelt.
.... und was soll ich sagen, es funktioniert sogar!
Allerdings funktioniert dies nur für den Ordner, in dem ich das Script auch laufen lasse. Es sollte jedoch rekursiv funktionieren - also auch inkl Unterordner
Folgendes habe ich:
Spoiler anzeigen
#######################################
;#
;#
;#
;#######################################
#include <File.au3>
$search = FileFindFirstFile("*.*")
[/autoit] [autoit][/autoit] [autoit]$localpath= "\\FRERICKST410W8\d\LFB\server"
[/autoit] [autoit][/autoit] [autoit]; Check ob Suche erfolgreich
If $search = -1 Then
MsgBox(0, "Fehler", "Keine Dateien gefunden")
Exit
EndIf
FileDelete("download.html")
$filew = FileOpen("download.html", 1)
If $filew = -1 Then
MsgBox(0, "Error", "Unable to open file.")
Exit
EndIf
FileWriteLine($filew,'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">' & @CRLF)
FileWriteLine($filew,'<html xmlns="http://www.w3.org/1999/xhtml">' & @CRLF)
FileWriteLine($filew,'<head>' & @CRLF)
FileWriteLine($filew,'<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />' & @CRLF)
FileWriteLine($filew,'<title>Alle Dateien herunterladen</title>' & @CRLF)
FileWriteLine($filew,'</head>' & @CRLF)
FileWriteLine($filew,'<body>' & @CRLF)
FileWriteLine($filew,'<p>Hier können Sie alle Dateien herunterladen:</p>' & @CRLF)
$i=0
$F=1
While 1
$file = FileFindNextFile($search)
If @error Then ExitLoop
If $file= "download.html" or $file="makehtml.exe" then
Else
$size = ByteSuffix(FileGetSize($file))
$suffix=StringRight ( $file, 3 )
$datei=StringTrimRight ( $file, 4 )
$dateipfad=StringReplace(StringReplace(@ScriptDir,$localpath,""),"","/") & '/' & $file
FileWriteLine($filew, $datei & ': <img src="/pix/download.gif" alt="Download"/> <a href="' & $dateipfad & '" target="_blank">Herunterladen</a> [' & $suffix & '][' & $size & ']'&'<br>')
$i=$i +1
$F=$F+1
EndIf
WEnd
FileWriteLine($filew,'</body> ' & @CRLF)
FileWriteLine($filew,'</html> ' & @CRLF)
FileClose($search)
FileClose($filew)
SplashOff()
SplashTextOn("Fertig", "downloads.html wurde erfolgreich erstellt ! Es wurden " & $i & " Dateien gelistet", 420, 40, -1, -1, 4, "",10)
Sleep(3000)
SplashOff()
; 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
Wünschenswert wäre in der Downloadliste eine Kennzeichnung bei einem Verzeichniswechsel. So daß man in der Liste erkennt daß nun ein Verzeichniswechsel erfolgt.
Hier ist mal ein Beispiel damit man es sich besser vorstellen kann.
http://lehrerfortbildung-bw.de/faecher/bio/bs…/download/docs/
Darüberhinaus wäre ein weiterer Schritt daß die Dateien der einzelnen Ordner jeweils automatisiert in einem ZIP Archiv zusammengefasst werden.
So läge dann in jedem Ordner eine Zip Datei. Diese sollte dann den Ordner und den entsprechenden Verzeichnisast darunter enthalten.
Ich habe es bereits mit _filelisttoarray von BugFix versucht. Aber das geht dann wohl über meinen Horizont.. jedenfalls will es nicht so wie ich will.
Bin über jede Hilfe dankbar.
Gruß Rochus