Abend,
ich bin gerade bei dem Projekt, einen Patcher zu erstellen, welcher die Md5 Checksummen der Dateien überprüft, ob sie mit den Md5 Checksummen im Ordner übereinstimmen und wenn nicht, dann sollen die Dateien heruntergeladen werden. Das Ding ist, das ich hier nicht ganz weiterkomme. In der Datalist.txt befindet sich der Dateiname und die Md5 Checksumme.
Beispiel für Datalist.txt
Spoiler anzeigen
Data : "\Test\Schauen.txt" | Md5 : "0x10F9DF2863D87C5A2C7EDE258BC84063"
Data : "\Test1.txt" | Md5 : "0xDEF6970BF3DF1492869C090C510D4A17"
Data : "\Test2.txt" | Md5 : "0x6581587E574CD81C91D4AD1801B4482C"
Als Webspace zum testen könnt ihr auch gerne mein nehmen , wo sich auch die Dateien, die ich eben geschrieben habe, drauf sind.
http://white1991x.square7.ch
Skript bitte per privater Nachricht senden. * Habe schon 2 Leute gefunden, die es machen würden.
Skirpt, soweit wie ich war und ich nicht weiterkommt ;
Spoiler anzeigen
#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("PatchUp", 551, 230, 280, 430)
$Background = GUICtrlCreatePic(@ScriptDir & "\Data\BackgroundLoader.jpg", 72, 8, 413, 60)
$GesamtProgress = GUICtrlCreateProgress(8, 104, 534, 25)
$EinzelProgress = GUICtrlCreateProgress(8, 168, 534, 25)
$LGesamtfortschritt = GUICtrlCreateLabel("Gesamtfortschritt", 8, 80, 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 & "\Data\DataList.txt", $aLines)
$Open = FileOpen(@ScriptDir & "\Data\Adresse.txt")
$Adresse = FileRead(@ScriptDir & "\Data\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]
$iDownloaded = 0
For $i = 1 To $aFiles[0][0]
If $aFiles[$i][1] <> 0 Then
$aLoaclPath = StringSplit($aLines[$i],"/")
for $j = 1 to $aLoaclPath[0]-1
if Not FileExists($aLoaclPath[$j]) Then DirCreate($aLoaclPath[$j])
Next
$GetData = InetGet($aFiles[$i][0], @ScriptDir & "\" & StringReplace($aLines[$i],"/","\"), 1, 1)
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
$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
Wenn ihr es fertig habt, wäre es nett, wenn ihr mir noch bei anderen Kleinigkeiten helfen könntet, z.B. , muss ich dort noch eine volle Fehlerwiedergabe mit reinmachen, also wenn z.B. etwas nicht gedownloadet werden kann, dass dann dort ansteht, welche Datei nicht gedownloadet werden konnte.