Sea a écrit :Comment le script détecte que c'est bien les deux mêmes fichiers ?
Le script que j'ai mis n'est qu'un exemple et il est évidemment adaptable
La détection se fait ici d'après les noms de fichier
Code : Tout sélectionner
$Nurl = _Url_To_Host($url & $files[$i]) ; fichier distant
....
$ret = _InetGetX($Nurl[0], $Nurl[1], [b]$destDir & "\" & $files[$i][/b], -1, 0, "_callBack") ; fichier local
Donc même si tu personnalises les noms de fichiers locaux, la détection se fera selon les indications
Code : Tout sélectionner
If FileExists($destDir & "\" & $files[$i]) Then
If Round($filesize[$i]) = Round(FileGetSize($destDir & "\" & $files[$i])) Then ....
Le plus simple pourrait être d'adapter le nom du fichier local en fonction de la fréquence des màj en y intégrant une date, par exemple avec @HOUR la détection ne serait positive que pendant l'heure en cours, à l'heure suivante les fichiers seraient retéléchargés sans écraser les anciens
► Afficher le texte
Code : Tout sélectionner
; calcul des tailles de fichier et vérification en cas de téléchargement interrompu
$totalSize = 0
Dim $filesize[6] ; stocke les tailles
For $i = 0 to 5
$filesize[$i] = InetGetSize($url & $files[$i])
$totalSize += $filesize[$i]
Next
For $i = 0 to 5
$localfile = _LocalFile($files[$i]) ;<< personnalisation
If FileExists($localfile) Then
If Round($filesize[$i]) = Round(FileGetSize($localfile)) Then
$nt += ($filesize[$i]/$totalSize)*100
EndIf
EndIf
Next
GUICtrlSetState($start, $GUI_ENABLE)
GUICtrlSetState($stop, $GUI_ENABLE)
GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
While 1
Sleep(10)
Wend
;====================================
Func _LocalFile($file)
$pos = StringInStr($file, '.', 0, -1)-1
$name = StringLeft($file, $pos)
$ext = StringTrimLeft($file, $pos)
Return $destDir & "\" & $name & "_" & @YEAR & @MON & @MDAY & @HOUR & $ext
EndFunc
Func _Demarrage()
For $i = 0 to 5
$localfile = _LocalFile($files[$i])
$Nurl = _Url_To_Host($url & $files[$i])
GUICtrlSetData($infolabel, $files[$i])
$ret = _InetGetX($Nurl[0], $Nurl[1], $localfile, -1, 0, "_callBack")
If $ret = 1 And not @error Then
$nt += (@extended/$totalSize)*100
GUICtrlSetData($label, Ceiling($nt))
Continueloop
EndIf
Next
Msgbox(0,"", "Terminé !")
Exit
EndFunc
;... etc
Mais ce n'est qu'une idée
