[Ex] Copie de fichier 'sécurisée' (Révision incrémentale)

Partagez vos scripts, et vos applications AutoIt.
Règles du forum
.
Répondre
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

[Ex] Copie de fichier 'sécurisée' (Révision incrémentale)

#1

Message par Tlem »

Voici un exemple de script qui permet de copier des fichiers, en conservant sur la destination l'historique des modifications.

Le principe est plutôt simple. Lors de chaque copie du fichier source vers la destination, si le fichier source est différent de la destination, alors le fichier se trouvant sur la destination est renommé avec un numéro de révision (Fichier(1).txt), puis la source est copiée sur la destination.
► Afficher le texteScript
Exemple complet joint au message.
Fichiers joints
CopySafe.zip
(6.32 Kio) Téléchargé 346 fois
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [Ex] Copie de fichier 'sécurisée' (Révision incrémentale)

#2

Message par Tlem »

Voici une nouvelle version du code.
Cette version est relativement différente, dans le sens ou L'UDF principal inclut uniquement la fonction de copie de fichier (Fichier Source => Répertoire de destination).

Vous trouverez dans le fichier joint, l'UDF que j'ai appelé RevisionCopy.au3, ainsi que l'UDF FileListToArrayNT.au3 nécessaire pour le fichier d'exemple RevisionCopy_Exemple.au3 afin de créer la liste des fichiers des dossiers et sous-dossiers à copier ainsi que deux dossiers (Dir1 et Dir2) qui sont là que pour l'exemple.
Modifiez à loisir les fichiers du dossier Dir1 et lancez RevisionCopy_Exemple.au3 entre chaque modification. Observez dans le dossier Dir2 comment réagit la fonction. ;)

Dans cette version, après la première copie des fichiers, si le fichier source est différent du fichier présent dans le répertoire de destination, alors le fichier de la destination est renommé avec la date de sa création, et la nouvelle copie vient prendre place comme nouvelle révision.

En résumé :

Code : Tout sélectionner

[b]1ere copie :[/b]
Fichier.txt (source crée le 30/08/2010 à 23h10m00)
=> Fichier.txt (destination)

[b]2ieme copie :[/b]
Fichier.txt (source modifiée le 30/08/2010 à 23h30m00)
=> Fichier.txt (destination)
=> Fichier_Rev20100830231000.txt (Fichier.txt du 30/08/2010 à 23h10m00)

[b]3ieme copie :[/b]
Fichier.txt (source modifiée le ultérieurement)
=> Fichier.txt (destination)
=> Fichier_Rev20100830231000.txt (Fichier.txt du 30/08/2010 à 23h10m00)
=> Fichier_Rev20100830233000.txt (Fichier.txt du 30/08/2010 à 23h30m00)
Cette fonction se voit agrémentée de deux paramètres optionnels :

Code : Tout sélectionner

_RevisionCopy($sSrcFile, $sDstDir, $iRev = 5, $iComp = 0)
$iRev représente le nombre maximum de copie de révision souhaité en plus du dernier fichier original et $iComp permet de choisir le mode de comparaison entre les deux fichiers : 0 = Date et taille, 1 = Utilisation de la commande FC.exe.

J'ai effectué pas mal de tests sous XP, mais pas sous d'autres OS.
La fonction peut sans doute être perfectible, alors n'hésitez pas à faire vous aussi autant de tests que nécessaires.
Fichiers joints
Revision Copy.7z
Fichiers exemple et UDF
(4.04 Kio) Téléchargé 228 fois
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [Ex] Copie de fichier 'sécurisée' (Révision incrémentale)

#3

Message par Tlem »

Mise à jour de l'UDF avec tests et gros nettoyage du sujet.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Répondre