wie mache ich das wenn eine Datei verändert wurde also ungleich mit der Datei auf dem FTP server das gleich die neue gedownloadet wird?
Und wie mache ich das in einem Progress der fortschritt des downloads angezeigt wird? (am besten in KB) ?
2. Fragen (Download und %)
-
- [ offen ]
-
johnnyboyy -
31. August 2009 um 19:19 -
Geschlossen -
Erledigt
-
-
1. Versions-Abfrage
2. Byte's ermitteln und umrechnen -
1. och nöööö möchte das verschiedene daten die sich manuel ändern ersetzt werden... kann z.b. nur datei 1,6,19,23 sein
2. WoW und die Erklärung?^^ habe davon 0 ahnung sons hätte ichs ja gemacht
-
so nach ner stunde suchen und sortieren der ganzen scripte auf meinem rechner hab ichs jetz
weiß leider nichmehr wer das geschrieben hat aber es war mal hier im forum gepostet:
Spoiler anzeigen
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <Array.au3>
#include <string.au3>; Url zum Webverzeichnis
[/autoit] [autoit][/autoit] [autoit]
Dim $ServerUrl = "http://blog.kroegers-web.de/videos/autoit/"
;Dim $ServerUrl = "http://testuser:qwert@http://www.kroegers-web.de/testdaten/"; Dateiliste die runtergeladen werden soll
[/autoit] [autoit][/autoit] [autoit]
Dim $FileList = "files.txt";Speicherpfad für die Liste
[/autoit] [autoit][/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, "Fehler...", "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);@CRLF aus der $txt Variabele entfernen
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$txt = StringReplace($txt, @CRLF, "|")$txtList = StringSplit($txt, "|")
[/autoit] [autoit][/autoit] [autoit]$txt = ""
[/autoit] [autoit][/autoit] [autoit]
For $i = 1 To $txtList[0]
$txtlistlen = StringLen($txtList[$i]) + 1
$txtliststart = StringInStr($txtList[$i], "/") + 1
If $txtliststart = 0 Then
$txt = $txt & $i & "-" & $txtlist[$i] & "|"
Else
$txtlistcount = $txtlistlen - $txtliststart
$txtlistresult = StringMid($txtList[$i], $txtliststart, $txtlistcount)
$txt = $txt & $i & "-" & $txtlistresult & "|"
EndIf
Next$txt = StringTrimRight($txt, 1)
[/autoit] [autoit][/autoit] [autoit];Form
[/autoit] [autoit][/autoit] [autoit]
$frmMain = GUICreate("FileLoader", 285, 150, 993, 325)
$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,"")
$id = StringLeft(GUICtrlRead($FileList),StringInStr(GUICtrlRead($FileList),"-")- 1)
$selectet = $ServerUrl & $txtList[$id]
InetGetSize($selectet)
If @error Then
GUICtrlSetState($cmdButton, $GUI_DISABLE)
Else
GUICtrlSetState($cmdButton, $GUI_ENABLE)
EndIf
$mediaformat = StringRight(GUICtrlRead($FileList), 3)
EndSwitch
WEndFunc RunDownload()
[/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)
Until $curSize >= 99
GUISetState(@SW_ENABLE)
GUICtrlSetData($infoLabel, "Download beendet!!!")
GUICtrlSetData($pcbDownload, 0)
EndFunc ;==>RunDownloaddes wär dann schonmal recht schön für deine downloads.
Zitatwie mache ich das wenn eine Datei verändert wurde also ungleich mit der Datei auf dem FTP server das gleich die neue gedownloadet wird?
ich denke des geht am besten indem du als dateinamen einfach die versionsnummer deiner scripte nimmst. d.h.:
wenn versionsnummer auf server > als installierte version dann runterladen
musst aber mal ausprobiern wies am besten geht, aber es wird sich ein weg finden -
Schnitzel:
Das ist von Poldy aus dem Video Thread -
Versionsüberprüfung geht auch mit InetGetSize, da vermutlich nicht jedes Skript die selbe Größe haben wird...
-
Oder du lädst eine Version.ini (ein Bsp) auf den Server hoch.
Dann lädst du die mit AutoIt herunter und liest sie aus.
In einer anderen Ini Lokal im Ordner liest du die "alte" Version aus.
Dann kannst du Vergleichen ob die neue, "neuer" ist.
Dann soll das Skript weiterlaufen und Downloaden. -
Die Version.ini kann man auch direkt mit InetGetSource behandeln, ohne dabei was runterzuladen.
Also ich ziehe das Auslesen und in eine Datei schreben dem Runterladen immer vor wenn es sich nicht um allzu große Textinhalte handelt.
-
1.ähm OK zum download sage ich 1.a aber wenn ich ne TXT datei runterladen will dann gehts nit
2. es sind über 1200 dateien die überprüft werden müssen ob eine neuer ist als die in ordner -
Wenn es nur um "neuer" geht dann kannst du FileGetTime oder wie das heißt nutzen.
-
ah und wie kriegt man das hin das er auch die FTP daten prüft
und 2. wie mache ich das es nur die neuen dateien runterlädt -
Dann können die alten ja überschrieben werden.
Bsp:
Lokaler Ordner: Mein Programm
Inhalt:
Test.txt
Text.dll
Blubb.ini
FTP Ordner: Mein Programm
Inhalt:
Test.txt
TextIstNeu.dll
Blubb.dllFalls du also durch irgendeine Möglichkeit wie oben beschrieben, herausfindest, ob irgendetwas NEU ist, dann kann der "alte" Kram ja auch überschrieben werden, da sich nichts ändert.
Jede Datei zu prüfen wäre meiner Meinung nach zu umständlich ! -
ja ich weiß ja nicht wie ich über ~1000 dateien prüfen kann
-
ich hatte mal irgendwo was gefunden(über google nicht auf dieser website) das hat gedownloadet und in ein Label immer die datenanzahl so dargestellt x / x und download immer perfect der der gezeigt wurde hat macken bei daten über 1 mb