FileExists() - aber nur in einem Verzeichnis
FTP Ordner auslesen + Download
-
- [ offen ]
-
Fredooo -
24. Januar 2008 um 22:15 -
Geschlossen -
Erledigt
-
-
Hallo,
ich fand das interessant und habe mir auch mal so ein kleines Skript gebaut, damit es nicht ganz unnütze ist, stelle ich es hier mal rein
Mein Dateiaufbau ist einach:
Datei1.xxx
Datei2.xxx
......Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstants.au3>
#include <Array.au3>; Url zum Webverzeichnis
[/autoit] [autoit][/autoit] [autoit]
Dim $ServerUrl = "http://www.DEINSERVER.de/test/"; Dateiliste die runtergeladen werden soll
[/autoit] [autoit][/autoit] [autoit]
Dim $FileList = "files.txt";Speicherpfad für Liste
[/autoit] [autoit][/autoit] [autoit]
Dim $SaveFileList = @TempDir & "\files.txt";Textdatei laden
[/autoit] [autoit][/autoit] [autoit]
If InetGet($ServerUrl & $FileList,$SaveFileList,1) = 0 Then
MsgBox(48,"Feheler...","Fehler beim download der Dateiliste")
Exit 1
EndIf;Dateiliste zum lesen öffnen
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Dim $fso = FileOpen($SaveFileList,0);Inhalt der Datei einlesen
[/autoit] [autoit][/autoit] [autoit]
Dim $txt = FileRead($fso);Dateiliste schliessen
[/autoit] [autoit][/autoit] [autoit]
FileClose($fso);@LF aus der $txt Variabele entfernen
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$txt = StringReplace($txt,@CRLF,"|");Form
[/autoit] [autoit][/autoit] [autoit]
$frmMain = GUICreate("FileLoader", 285, 150, 193, 125)
$pcbDownload = GUICtrlCreateProgress(24, 64, 233, 17)
$infoLabel = GUICtrlCreateLabel("",24,84,233,25,$SS_CENTER )
$cmdButton = GUICtrlCreateButton("Start Download", 24, 104, 233, 25, 0)
GUICtrlSetState(-1,$GUI_DISABLE)
$FileList = GUICtrlCreateCombo("FileList", 24, 24, 233, 25)
GUICtrlSetData(-1, $txt)GUISetState(@SW_SHOW)
[/autoit] [autoit][/autoit] [autoit];Variable für die derzeit Ausgewählte Datei
[/autoit] [autoit][/autoit] [autoit]
Dim $selectet;Variable für die Dateiendung
[/autoit] [autoit][/autoit] [autoit]
Dim $mediaformat;Speicherort
[/autoit] [autoit][/autoit] [autoit]
Dim $SaveFileWhile 1
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $cmdButton
$SaveFile = FileSaveDialog("Datei speichern..",@DesktopDir,"Video (*." & $mediaformat & ")",2,GUICtrlRead($FileList))
If NOT @error Then RunDownload()
Case $FileList
GUICtrlSetData($infoLabel,"")
GUICtrlSetData($pcbDownload,0)
$selectet = $ServerUrl & GUICtrlRead($FileList)
InetGetSize($selectet)
If @error Then
GUICtrlSetState($cmdButton,$GUI_DISABLE)
Else
GUICtrlSetState($cmdButton,$GUI_ENABLE)
EndIf
$mediaformat = StringRight(GUICtrlRead($FileList),3)
EndSwitch
WEndFunc RunDownload()
[/autoit] [autoit][/autoit] [autoit][/autoit]
GUISetState(@SW_DISABLE)
$FileSize = InetGetSize($selectet)
InetGet($selectet,$SaveFile,1,1)
$curSize = 0
Do
GUICtrlSetData($pcbDownload,$curSize)
$curFileSize = FileGetSize($SaveFile)
$curSize = $curFileSize * 100
$curSize = $curSize / $FileSize
$curSize = Ceiling($curSize)
$curFileSize = Round($curFileSize / 1024 / 1024,2)
GUICtrlSetData($infoLabel,$curFileSize & " - " & Round($FileSize / 1024 / 1024,2) & " MB (" & $curSize & "%)")
Sleep(200)
ConsoleWrite($curSize & @lf)
Until $curSize >= 99
GUISetState(@SW_ENABLE)
EndFunc -
Ich wollte mal fragen, ob es möglich ist das Script so einzustellen, dass wenn ich im DropDownMenu
einen Eintrag auswähle, das Script sofort prüft ob die Datei bereits gedownloadet wurde oder nicht?!Also nicht jede Sekunde sondern nur wenn der Input in der DropDownbox sich ändert.
Und nocheinmal nachdem die Datei gedownloadet wurde (das bekomm ich mit dem entsprechenden Befehle denk ich mal alleine hin) -
Zitat
Ich wollte mal fragen, ob es möglich ist das Script so einzustellen, dass wenn ich im DropDownMenu
einen Eintrag auswähle, das Script sofort prüft ob die Datei bereits gedownloadet wurde oder nicht?!Wenn Du einen festen Pfad hast wo der Benutzer seinen Download ablegen muss, dann ja. Halte ich aber für nicht so klug, da der Benutzer ja selber entscheiden will wo er seine Dateien ablegt. Zum prüfen ob eine Datei besteht :FileExists
ZitatUnd nocheinmal nachdem die Datei gedownloadet wurde (das bekomm ich mit dem entsprechenden Befehle denk ich mal alleine hin)
Das ist eine gute Idee, mit InetGetSize($url) bekommste die Größe wie sie sein soll, mit FileGetSize die Größe der runtergeladenen Datei, schaue ob sie gleich groß sind und du weißt ob der Download komplett war.
Zweite Möglichkeit, wenn du den Download nicht im Hintergrund laufen lässt, $result = InetGet($url) wenn eine 1 in $result ist war alles ok sonst steht da eine 0 drin. -
Also ich habe einen demos ordner createn lassen wo alle runtergladenen Demos eingefügt werden...
Das Script überprüft im Moment noch ob die ausgewählte Datei (Demo) schon in diesem Ordner vorhanden ist.
Wenn nicht poppt im Moment noch ein MsgBox auf mit dem hinweis, dass die Datei schon vorhanden ist.
Jedoch fängt er kurz danach wieder an die Datei erneut zu ziehen.Daher will ich es so lösen, dass es eben so ufnktioniert:
Ich lade demo1 runter
danach wähle ich demo2 aus und lade die ebenfalls runter
wenn ich dann wieder auf demo1 gehe (im DropDownMenu) soll das Script nach Möglichkeit den Button
Download disablen und erst weider enablen wenn ich im DropDownMenu eine demo ausgewählt habe, die noch nicht
mit dem selben Namen im ordner demos enthalten ist.Wenn der User die Dateien dann verschiebt muss er sie sich eben wieder neu runterziehe (wenn er will)
Also eben kurz gesagt
DropDownMenu Datei auswählen und checken ob es bereits eine Datei mit diesem namen gibt.
Wenn nicht Button Download enabled lassen.
Wenn doch dann Button Download disablen.hoffe war gut verständlich?!
und ich würde mich sehr über weitere hilfe freuneGroßes Dankeschön bisher schon mal an euch
MfG Fredooo
-
Hier noch mal ein wirklich einfaches Beispiel, aber ich würde mir mal die Hilfe Datei ansehen, das sind nun wirklich elementare Sachen (nicht böse gemeint). Zudem warum werden Beispiele gepostet die Du dir nicht mal ansiehst, in meinen Skript zunutze ich eigentlich alle Funktionen die du benötigst, vielleicht nicht in dem Zusammenhang wie Du es gerne haben möchtest, aber man kann es leicht abändern.
Wie schon gesagt, nicht böse gemeint, nur ich denke, das es eine gute Hilfe Datei beim AutoIT gibt, die man auch ruhig mal benutzen darf
Hier nun das Beispiel:
Spoiler anzeigen
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]$pfad = @TempDir & "\"
[/autoit] [autoit][/autoit] [autoit]
$server = "http://www.hardcopy.de/"#Region ### START Koda GUI section ### Form=
[/autoit] [autoit][/autoit] [autoit]
$Form1 = GUICreate("Form1", 350, 187, 193, 125)
$Combo1 = GUICtrlCreateCombo("Combo1", 16, 24, 241, 25)
GUICtrlSetData(-1,"hc.exe|hcf.exe")
$Button1 = GUICtrlCreateButton("Button1", 24, 80, 233, 41, 0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Combo1
If FileExists($pfad & GUICtrlRead($Combo1)) = 1 Then
GUICtrlSetState($Button1,$GUI_Disable)
Else
GUICtrlSetState($Button1,$GUI_Enable)
EndIf
Case $Button1
If InetGet($server & GUICtrlRead($Combo1),$pfad & GUICtrlRead($Combo1),1,0) Then MsgBox(64,"Info","Download OK")EndSwitch
[/autoit]
WEnd -
Ne keine Angst ich seh das auch überhaupt nich böse gemeint an oder so
Bin ja dankbar dass ihr mir so gut unter die Arme greiftUnd ja ok ich weiß ich bin immer bissel zu schnell mit fragen...
bin eben immer bissel faul selber zu lesen
Aber werd mir jetz mal die HilfeDatei anschauen
Danke aufjedenfall für die Tips.werd *hoffentlich* erst wieder hier reinschreiben müssen wenn das Tool funktioniert
-
Freu mich drauf, kannst Du ja mal online stellen, schaue mir immer gerne gute CS Clips an.
-