Webspace mit InetGet Ordner downlaoden + Inhalt?

  • Hallo,

    ich habe das Problem, dass ich mit InetGet keine Ordner laden kann.

    Ist dies irgendwie möglich von einer Webspace, ohne das man vorher den Inhalt des Ordners kennt?

  • Hmm okay, dann muss ich es anders machen, habe da schon eine Idee, aber er läd von mir keine Sachen von meiner Webspace, die sich nicht in dem Hauptverzeichnis befinden, wie kann dies angehen?

    Hier mal mein Script :

    Spoiler anzeigen
    [autoit]


    #RequireAdmin
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <INet.au3>
    #include <File.au3>
    #include <String.au3>
    #include <Array.au3>

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

    Global $aLines, $sMsg, $sMsg2

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

    $GUI = GUICreate("Patcher", 551, 230, 280, 430, 0)
    $Background = GUICtrlCreatePic("C:\Users\User\Documents\Patcher Bilder\BackgroundLoader.jpg", 72, 8, 413, 60)
    $GesamtProgress = GUICtrlCreateProgress(8, 104, 534, 25)
    $EinzelProgress = GUICtrlCreateProgress(8, 168, 534, 25)
    $LGesamtfortschritt = GUICtrlCreateLabel("Gesamtfortschritt", 8, 72, 200, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    $LabelDownladdatei = GUICtrlCreateLabel("", 8, 144, 539, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    GUISetState(@SW_SHOW)
    HttpSetUserAgent("Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.7) Gecko/20100713 Firefox/3.6.16") ;sonst streiken manche Freehoster wenn der AutoItUseragent gesetzt ist
    $SetState = 0

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    If $SetState = 0 Then
    _FileReadToArray(@ScriptDir & "\Loadlist.txt", $aLines)
    _ArrayDisplay($aLines)
    $Open = FileOpen("Adresse.txt")
    $Adresse = FileRead("Adresse.txt")
    $GesamtBytes = 0
    Dim $aFiles[$aLines[0] + 1][2]
    For $i = 1 To $aLines[0]
    If $aLines[$i] <> "" Then
    $aFiles[$i][0] = $Adresse & '/' & $aLines[$i]
    $aFiles[$i][1] = InetGetSize($aFiles[$i][0])
    $aFiles[0][1] += $aFiles[$i][1]
    EndIf
    Next
    $aFiles[0][0] = $aLines[0]
    _ArrayDisplay($aFiles)
    $iDownloaded = 0
    For $i = 1 To $aFiles[0][0]
    If $aFiles[$i][1] <> 0 Then
    $GetData = InetGet($aFiles[$i][0], @ScriptDir & $aLines[$i], 1, 1) ;im Hintergrund
    GUICtrlSetData($LabelDownladdatei, $aFiles[$i][0] & ": ")
    Do
    $aInfo = InetGetInfo($GetData)
    $iPercentAll = Round(($iDownloaded + $aInfo[0]) / $aFiles[0][1] * 100, 2)
    $iPercentCurrent = Round($aInfo[0] / $aFiles[$i][1] * 100, 2)
    GUICtrlSetData($GesamtProgress, $iPercentAll)
    GUICtrlSetData($EinzelProgress, $iPercentCurrent)
    GUICtrlSetData($LGesamtfortschritt, "Gesamtfortschritt: " & $iPercentAll & "%")
    GUICtrlSetData($LabelDownladdatei, $aLines[$i] & " wird heruntergeladen : " & $iPercentCurrent & "%")
    ConsoleWrite($iDownloaded + $aInfo[0] & " " & $aFiles[0][1] & " " & $iPercentAll & @TAB & $aInfo[0] & " " & $aFiles[$i][1] & " " & $iPercentCurrent & @CRLF)
    Sleep(1000)
    Until $aInfo[2]
    If $aInfo[3] Then ;wenn erfolgreich
    $iDownloaded += $aInfo[0]
    $sMsg &= $aFiles[$i][0] & @CRLF
    Else
    $sMsg2 &= $aFiles[$i][0] & @CRLF
    EndIf
    InetClose($GetData)
    EndIf
    Next
    $SetState += 1
    if $sMsg <> "" Then MsgBox(64, "Download beendet","Folgende Dateien wurden erfolgreich heruntergeladen:" & @CRLF & @CRLF & $sMsg)
    if $sMsg2 <> "" Then MsgBox(16, "Download beendet","Folgende Dateien konnten nicht heruntergeladen werden:" & @CRLF & @CRLF & $sMsg)
    EndIf
    WEnd;### Tidy Error -> switch is never closed in your script.

    [/autoit]

    In meiner Textdatei steht nun folgendes :

    Code
    Test1.txt
    Test2.txt
    Test/Schauen.txt

    Test1.txt und Test2.txt läd er wunderbar herunter, aber Schauen.txt nicht, wieso?

  • Hallo Julien,

    tausche deine Zeile 51 gegen

    [autoit]

    $aLoaclPath = StringSplit($aLines[$i],"/")
    for $j = 1 to $aLoaclPath[0]-1
    if Not FileExists($aLoaclPath[$j]) Then DirCreate($aLoaclPath[$j]) ;Lokal benötigte Ordner anlegen
    Next
    $GetData = InetGet($aFiles[$i][0], @ScriptDir & "\" & StringReplace($aLines[$i],"/","\"), 1, 1) ;im Hintergrund

    [/autoit]

    die Pfadangabe für die jeweilige lokale Datei war falsch, es müssen ja erst noch die Ordner angelegt werden. Ausserdem hattest du vergessen/herauseditiert einen "\" einzufügen.

    Da deine Dateien so gross und mein INet so langsam ist habe ich es nicht komplett durchgetestet. Da aber das Array nach dem Ermitteln der Gesamtgrösse für alle 3 Dateien einen Wert angezeigt hat, sollten jetzt auch alle 3 Dateien heruntergeladen werden können,

    mfg autoBert

  • Danke dir ;)

    Über FTP mache ich es mit Absicht nicht, da dann jeder an meine FTP Daten kommen kann, deshalb immer nur über Webspace.