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 :
$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.