Page 1 sur 1

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

Posté : dim. 16 nov. 2008 18:00
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.

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

Posté : lun. 30 août 2010 02:23
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.

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

Posté : lun. 30 août 2010 02:27
par Tlem
Mise à jour de l'UDF avec tests et gros nettoyage du sujet.