Page 1 sur 1

[..] Copie dossier + Barre de progression

Posté : ven. 10 juin 2011 11:33
par quirionais
Bonjour tout le monde !
Je suis actuellement en fin de stage en entreprise et mon dernier objectif est de coder un petit soft de sauvegarde pour un utilisateur X.
Je vous passe les détails car ça n'a aucune importance.
Tout fonctionne correctement mais j'aurais aimé voir apparaître une barre de progression pendant la copie ( CD => Serveur ) qui est assez longue.
Vous allez me dire que le sujet a déjà été présenté (ce qui est vrai) mais je n'arrive pas à intégrer ça dans ma fonction.
Voila ma fonction (simplifié pour l'exemple) :

Code : Tout sélectionner

Func _copy()

        If FileExists($dirFolder) Then
            MsgBox(0, "", "La sauvegarde a déjà été effectué !")
            Return 1
        Else
            _RunDOS ("xcopy.exe " & $source & " " & $destination & " /e /c /h /r /k /y /d /i")
            _RunDOS ("xcopy.exe " & $source1 & " " & $destination1 & " /e /c /h /r /k /y /d /i")
            _RunDOS ("xcopy.exe " & $source2 & " " & $destination2 & " /e /c /h /r /k /y /d /i")
        EndIf

        Return 1
    EndFunc
Merci d'avance

Re: [..] Copie dossier + Barre de progression

Posté : ven. 10 juin 2011 11:45
par zeshrek
Bon bin déjà, ca sera pas possible en l'état.
Tu utilises xcopy qui est une fonction DOS. Pourquoi ne pas utiliser une fonction de copie d'autoit comme FileCopy () ou DirCopy() ?

Et là ca te permettrait assez facilement de faire ta barre de progression. Si tes sources sont des répertoires, un petit coup de _FileListToArray pour avoir la liste des fichiers a copier, et donc entre chaque copie tu fais progresser ta barre

Re: [..] Copie dossier + Barre de progression

Posté : ven. 10 juin 2011 11:56
par scorp84
Bonjour quirionais,

Voici un exemple de copie avec barre de progression :

http://www.autoitscript.com/forum/topic ... ntry600777

En espérant voir pu t'aider.

Amicalement.

BM

Re: [..] Copie dossier + Barre de progression

Posté : ven. 10 juin 2011 14:02
par quirionais
Merci mais cet exemple ne copie pas un répertoire entier et je ne sais pas comment l'adapter dans ce but.
Je sais, je suis mauvais mais je suis technicien système et réseau en théorie :p

J'ai rectifier mon code comme ça pour le moment (avec DirCopy):

Code : Tout sélectionner

    Func _copy()
        If FileExists($dirFolder) Then
            MsgBox(0, "", "La sauvegarde a déjà été effectué !")
            Return 1
        Else
            DirCopy ($CDFolder, $dirFolder, 1)
            DirCopy ($sourceRSI, $s_dataRSI, 1)
            DirCopy ($sourceMSA, $s_dataMSA , 1)
        EndIf
        Return 1
    EndFunc

Re: [..] Copie dossier + Barre de progression

Posté : ven. 10 juin 2011 15:32
par zeshrek
Si tu ne copies pas un répertoire entier, pourquoi tu utilises dircopy ? A ce moment là, c'est filecopy qu'il faut utiliser...

Re: [..] Copie dossier + Barre de progression

Posté : ven. 10 juin 2011 19:39
par mikell
Ben il va bien le script que t'indique scorp84 (tu peux même le simplifier)
Si tu copies des répertoires, tu utilises DirCopy() et DirGetSize()
Avec DirGetSize() tu enregistres la taille du répertoire copié, la taille du répertoire à copier, tu divises et tu envoies le rapport à ta progressbar
à utiliser dans une boucle

véri izi :mrgreen:

Re: [..] Copie dossier + Barre de progression

Posté : mer. 15 juin 2011 17:45
par TopXm
Bonjour,

J'ai fait un bout de code pour sauvegarder le dossier Mes Documents d'un membre de la famille, si ça peut aider.

NB : Ne gère pas les sous-dossiers
► Afficher le texteBout de code