2. Fragen (Download und %)

  • 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) ?

    [autoit]


    #cs-----------------------------------------------------------------------------
    Hilfe ist immer gut also nimmt sie an ^^
    #ce-----------------------------------------------------------------------------

    [/autoit]
  • 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

    [autoit]


    #cs-----------------------------------------------------------------------------
    Hilfe ist immer gut also nimmt sie an ^^
    #ce-----------------------------------------------------------------------------

    [/autoit]
  • 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>
    #include <Array.au3>
    #include <string.au3>

    [/autoit] [autoit][/autoit] [autoit]

    ; Url zum Webverzeichnis
    Dim $ServerUrl = "http://blog.kroegers-web.de/videos/autoit/"
    ;Dim $ServerUrl = "http://testuser:qwert@http://www.kroegers-web.de/testdaten/"

    [/autoit] [autoit][/autoit] [autoit]

    ; Dateiliste die runtergeladen werden soll
    Dim $FileList = "files.txt"

    [/autoit] [autoit][/autoit] [autoit]

    ;Speicherpfad für die Liste
    Dim $SaveFileList = @TempDir & "\files.txt"

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;Textdatei laden
    If InetGet($ServerUrl & $FileList, $SaveFileList, 1) = 0 Then
    MsgBox(48, "Fehler...", "Fehler beim download der Dateiliste")
    Exit 1
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ;Dateiliste zum lesen öffnen
    Dim $fso = FileOpen($SaveFileList, 0)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;Inhalt der Datei einlesen
    Dim $txt = FileRead($fso)

    [/autoit] [autoit][/autoit] [autoit]

    ;Dateiliste schliessen
    FileClose($fso)

    [/autoit] [autoit][/autoit] [autoit]

    ;@CRLF aus der $txt Variabele entfernen
    $txt = StringReplace($txt, @CRLF, "|")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $txtList = StringSplit($txt, "|")

    [/autoit] [autoit][/autoit] [autoit]

    $txt = ""
    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

    [/autoit] [autoit][/autoit] [autoit]

    $txt = StringTrimRight($txt, 1)

    [/autoit] [autoit][/autoit] [autoit]

    ;Form
    $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)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    ;Variable für die derzeit Ausgewählte Datei
    Dim $selectet

    [/autoit] [autoit][/autoit] [autoit]

    ;Variable für die Dateiendung
    Dim $mediaformat

    [/autoit] [autoit][/autoit] [autoit]

    ;Speicherort
    Dim $SaveFile

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $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
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func RunDownload()
    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 ;==>RunDownload

    [/autoit]

    des wär dann schonmal recht schön für deine downloads.

    Zitat

    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?

    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 ;)

  • 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

    [autoit]


    #cs-----------------------------------------------------------------------------
    Hilfe ist immer gut also nimmt sie an ^^
    #ce-----------------------------------------------------------------------------

    [/autoit]
  • 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

    [autoit]


    #cs-----------------------------------------------------------------------------
    Hilfe ist immer gut also nimmt sie an ^^
    #ce-----------------------------------------------------------------------------

    [/autoit]
  • 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.dll

    Falls 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

    [autoit]


    #cs-----------------------------------------------------------------------------
    Hilfe ist immer gut also nimmt sie an ^^
    #ce-----------------------------------------------------------------------------

    [/autoit]
  • 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

    [autoit]


    #cs-----------------------------------------------------------------------------
    Hilfe ist immer gut also nimmt sie an ^^
    #ce-----------------------------------------------------------------------------

    [/autoit]