Bonjour,
J'essaye de faire un script qui permet de sauvegarder des fichiers de la même façon que Xcopy mais sans l'utiliser et avec une interface graphique.
J'ai trouvée la fonction _CopyWithProgress :
http://www.autoitscript.com/forum/index ... opic=83896
► Afficher le texte
Code : Tout sélectionner
Func _CopyWithProgress($inSource, $inDest, $ChunkSize = 2048)
; Function to copy a file showing a realtime progress bar
;
; By Paul Niven (NiVZ)
;
; 05/11/2008
;
; Parameters:
;
; $inSource - Full path to source file
; $inDest - Full path to destination file (structure will be created if it does not exist
; $ChunkSize - (Optional) Size of chunks to copy - setting this higher makes large files copy faster
; Default chunk size is 2048
;
; Returns 0 if copy is successful and 1 if it fails
; Open source file for BINARY reading
$SourceFile = FileOpen($inSource, 16)
; Check that file open was successful
If $SourceFile = -1 Then
MsgBox(16, "Error", "Unable to open source file: " & $inSource)
Exit
EndIf
; Open destination file for BINARY writing , overwriting existing file and creating directory structure if it doesn't exist
$DestFile = FileOpen($inDest, 26)
; Check that file open was successful
If $SourceFile = -1 Then
MsgBox(16, "Error", "Unable to open destination file: " & $inDest)
Exit
EndIf
; Get the size of the file we are going to copy
$SourceSize = FileGetSize($inSource)
; Calculate how many chunks we need to copy
$Chunks = $SourceSize / $ChunkSize
; Show the progress bar
;ProgressOn("File Copy", "Copying...", "Source: " & $inSource & @LF & "Dest: " & $inDest)
; Loop from 0 to number of chunks
For $i = 0 to $Chunks
; Read the next chunk
$Data = FileRead($SourceFile, $ChunkSize)
; Write the next chunk
FileWrite($DestFile, $Data)
; Update the progress bar
;ProgressSet( (($i + 1) / $Chunks) * 100 )
GUICtrlSetData($Prog_fichier, (($i + 1) / $Chunks) * 100)
Next
; Hide the progress bar
ProgressOff()
; Close the source file
FileClose($SourceFile)
; Close the destination file
FileClose($DestFile)
; Check the file copy was successful
$DestSize = FileGetSize($inDest)
If $SourceSize = $DestSize Then
Return 0
Else
Return 1
EndIf
EndFunc
Elle est très intéressante car elle permet d'avoir la progression de la copie. Seulement voilà, c'est un nouveau fichier qui est créé et donc la date est celle du jour et non pas celle du fichier d'origine.
Existe-il une fonction qui permette de changer la date et l'heure de modification d'un fichier ?
Si non, avez vous une idée de comment faire autrement ?
Merci d'avance.
Amicalement.
BM