Aide et conseils concernant AutoIt et ses outils.
bilbo
Niveau 1
Messages : 13 Enregistré le : jeu. 18 mars 2010 14:45
Status :
Hors ligne
#1
Message
par bilbo » jeu. 18 mars 2010 14:55
Bonjour,
Afin d'archiver automatiquement certains fichiers de mon disque, avez vous une soluce pour copier directement des fichiers j-90 d'un repertoire vers un autre repertoire.
En gros, je voudrais copier des fichiers créés il y a trois mois sur un autre repertoire de mon disque afin de les archiver.
Le 18/03/2010 je souhaites copier les fichiers du 18/12/2009.
Merci de vos lumières.
Modifié en dernier par
bilbo le ven. 19 mars 2010 12:40, modifié 1 fois.
scorp84
Niveau 7
Messages : 415 Enregistré le : mar. 04 nov. 2008 21:51
Localisation : Avignon, France
Status :
Hors ligne
#2
Message
par scorp84 » jeu. 18 mars 2010 16:26
Bonjour bilbo,
Essaye avec la fonction "_DateDiff".
Je t'ai mis un exemple :
► Afficher le texte
Code : Tout sélectionner
#include <Date.au3>
$script_titre="ARCHIVAGE DE FICHIERS"
$script_desc="Déplacement de fichiers selon ancienneté définie"
$auteur="Btd"
$maj="18/03/2010"
; Répertoire fichiers
$rep_ori="C:\BUGS\" ; Avec \ final
$rep_dest="C:\BUGS\" ; Avec \ final
$extention="*.*"
; Delta jours
$delta=1
; Msg de confirmation
$msgconf_timer=10
$msgconf_ok="OK : Exécution immédiate du script"
$msgconf_annuler="Annuler : Annuler l'exécution du script"
$msgconf_fintimer="Aucune action : Exécution du script dans " & $msgconf_timer & " secondes"
$msgconf_reponse=MsgBox(1, $script_titre, $script_titre & @LF & @LF & $script_desc & @LF & @LF & "Auteur : " & $auteur & " - " & "v. " & $maj & @LF & @LF & "Répertoire d'origine : " & $rep_ori & @LF & "Répertoire de destination : " & $rep_dest & @LF & "Delta : " & $delta & " jour(s)" & @LF & "Type de fichiers : " & $extention & @LF & @LF & $msgconf_ok & @LF & $msgconf_annuler & @LF & $msgconf_fintimer, $msgconf_timer)
; Exit si [Annuler]
If $msgconf_reponse==2 Then
Exit
EndIf
; Recherche des fichiers dans le répertoire d'origine (! les répertoires sont listés aussi)
$search = FileFindFirstFile($rep_ori & $extention)
; Msg si répertoire de destination inexistant ou vide
If $search = -1 Then
MsgBox(0, $script_titre, "Le répertoire " & $rep_ori & " n'existe pas ou est vide",15)
Exit
EndIf
; Compteur fichiers
$compteur=0
; Boucle dans les fichiers du répertoire
While 1
; Fichier en cours
$fichier = FileFindNextFile($search)
; Exit si erreur
If @error Then ExitLoop
; Récupération date de création du fichier
$date_fichier = FileGetTime($rep_ori & $fichier, 0) ; Mettre 0
; Exlusion des répertoires
$attributs=FileGetAttrib($rep_ori & $fichier)
$rep_ou_fichier=StringInStr($attributs,"D")
; Ne prend que les fichiers
If $rep_ou_fichier==0 Then
If Not @error Then
; Récupération date et heure du fichier
$yyyymd = $date_fichier[0] & "/" & $date_fichier[1] & "/" & $date_fichier[2]
$hhmmss = $date_fichier[3] & ":" & $date_fichier[4] & ":" & $date_fichier[5]
; Calcul delta
$iDateCalc = _DateDiff( 'd',$yyyymd & " " & $hhmmss,_NowCalcDate())
; Déplacement du fichier si supérieur au delta
If $iDateCalc >= $delta Then
FileMove($rep_ori & $fichier, $rep_dest & $date_fichier[0] & "\" & $date_fichier[1] & "\" & $date_fichier[2] & "\" & $fichier, 8)
;MsgBox(0, "DEPLACEMENT", "Fichier : " & $fichier & @LF & "Date / Heure : " & $yyyymd & " " & $hhmmss & @LF & "Delta : " & $iDateCalc & @LF & "Déplacé vers : " & $rep_dest & $date_fichier[0] & "\" & $date_fichier[1] & "\" & $date_fichier[2], 2)
$compteur=$compteur+1
EndIf
EndIf
EndIf
WEnd
; Ferme la recherche
FileClose($search)
En espérant que cela puisse t'aider.
Amicalement.
BM
bilbo
Niveau 1
Messages : 13 Enregistré le : jeu. 18 mars 2010 14:45
Status :
Hors ligne
#3
Message
par bilbo » jeu. 18 mars 2010 18:36
Merci scorp84, je regarde ça et je te tiens au courant.
DT
bilbo
Niveau 1
Messages : 13 Enregistré le : jeu. 18 mars 2010 14:45
Status :
Hors ligne
#4
Message
par bilbo » ven. 19 mars 2010 12:40
Encore Merci Scopr34, grace à ton aide j'ai résolu mon problème.
Mon code n'est pas encore trés propre, mais il fonctionne.