Page 1 sur 1

[R] Problème copie de données

Posté : mar. 14 déc. 2010 14:46
par bahamut789
Bonjour,

J'ai commencer à utiliser Autoit pour réaliser quelques scripts qui ont marcher jusqu'à maintenant.
(je suis donc débutant)

Voici mon problème , je dois copier des données d'un emplacement à un autre.

Mon problème est que je voudrais avoir un outils de configuration, je m'explique je voudrais pouvoir changer l'emplacement-destination sans toucher au code source d'autoit.

J'ai donc pensée à utiliser le bloc-notes pour changer ces valeurs avec un fichier texte source et un autre fichier texte destination, sachant que je voudrais avoir plusieurs dossiers cible dans le fichier texte(source destination) séparée par virgule ,tabulation ou autre.

Mais j'ai rencontrée deux problèmes:

1-Les données ne se copient pas
2-Je ne suis pas sur que si je met plusieurs dossiers dans le fichier texte source les dossiers cible soit tous reconnue

Voici mon code:
► Afficher le texte

Re: [..] Problème copie de données

Posté : mar. 14 déc. 2010 17:29
par bloodwolff
Voilà j'ai fais un code simple et commenté , j'espère qu'il t'aidera

Code : Tout sélectionner

#NoTrayIcon
#Include <File.au3> ;~On inclu l'udf de la fonction _filecountlines

$Ligne_1 = _FileCountLines("C:\1.txt") ;~On compte les lignes du premier fichier
$Ligne_2 = _FileCountLines("C:\2.txt") ;~On compte les lignes du second
If $Ligne_1 <> $Ligne_2 Or $Ligne_1 < 1 Then ;~Si ils n'ont pas le même nombres de lignes ou qu'ils ont moins de 1 ligne
    MsgBox(16,"Erreur", "Il n'y a pas le même nombre de sources que de destinations") ;~On affiche une Boîte de dialogue d'erreur
    Exit ;~Et on quitte le script
EndIf

$open_1 = FileOpen("C:\1.txt") ;~On ouvre les fichiers en mode lectures
$open_2 = FileOpen("C:\2.txt")

For $i=1 To $Ligne_1 ;~On lance une boucle qui se lance autant de fois qu'il y a de ligne
    $source = FileReadLine($open_1, $i) ;~On lit la ligne $i
    $destination = FileReadLine($open_2, $i)
    If not DirCopy($source,$destination) Then ;~On copie le dossier et si il y à un erreur
        Switch MsgBox(22, "Erreur", "Impossible de copier le dossier" & @CRLF & $source) ;~On affiche une boîte de dialogue d'erreur et on attend la réponse
            Case 2 ;~Si la réponse est cancel
                ExitLoop ;~On quitte la boucle
            Case 10 ;~Si la réponse est réessayer
                $i -= 1 ;~On recule le compteur de 1
        EndSwitch
    EndIf
Next

FileClose($open_1);~On ferme les fichiers pour libérer la mémoire
FileClose($open_2)

Re: [..] Problème copie de données

Posté : mer. 15 déc. 2010 11:37
par bahamut789
Merci c'est parfait :D

J'ai juste modifier une ligne car les données n'étaient pas copier si un ou plusieurs fichiers existaient déjà.

Code : Tout sélectionner

If not Dircopy($source,$destination,1) Then ;~On copie le dossier et si il y à un erreur
J'ai rajouter un "1" après destination


Merci pour ton aide très précieuse coninu comme ça

Cordialement,