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?
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?
Nur dann, wenn dieser Directory Listings macht. Sonst nicht,
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 :
#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>
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
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.
In meiner Textdatei steht nun folgendes :
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
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
warum machst du es nicht einfach per FTP?
Danke dir
Über FTP mache ich es mit Absicht nicht, da dann jeder an meine FTP Daten kommen kann, deshalb immer nur über Webspace.