Page 1 sur 1
comment supprimer la plus vieille sauvegarde ?
Posté : 14 mars 2009 13:18
par balad144
Bonjour,
Je fais actuellement pour une école un batch des sauvegardes hebdos (vendredi) du répertoire "Mes Documents" avec la date comme ceci:
XCOPY /E /Y /R /I /H C:\Mes Documents D:\DocumentsSave_%date:~0,2%_%date:~3,2%_%date:~6,4%
donc j'ai plusieurs répertoires comme:
DocumentsSave_13_02_09
DocumentsSave_20_02_09
DocumentsSave_27_02_09
DocumentsSave_06_03_09
DocumentsSave_13_03_09
Comme j'aimerai conserver les 5 dernières sauvegardes, je suis obligé de virer manuellement la plus vieille (c'est à dire -6).
d'où ma question, est il possible à la fin du batch de sauvegarde de virer automatiquement la sauvegarde -6.
j'ai regardé sur ce site et je n'ai pas trouvé d'exemple concernant ce sujet.
Je vous remercie d'avance pour vos propositions et bon week end.
Re: comment supprimer la plus vieille sauvegarde ?
Posté : 14 mars 2009 21:16
par Batch_Man
Bonsoir,
Voilà le code qui je pense vous convient
For /f "skip=5 tokens=*" %%a in ('dir /b /o-d /ad "D:\"') do (
echo D:\%%a)
Si c'est bien ceci vous pourrez remplacer echo par RD /S /Q pour supprimer le répertoire.
Batch_Man
Re: comment supprimer la plus vieille sauvegarde ?
Posté : 16 mars 2009 22:42
par balad144
Merci Batch_Man,
effectivement ça fonctionne très bien, pour l'instant je l'ai seulement testé avec le DO ECHO, vu que je fais une sauvegarde par semaine.
j'aurai 2 petites questions à te poser:
la 1ère: où puis je trouver les paramètres qui vont avec FOR, car je vois que l'on peut faire pas mal de choses ?
la 2ème: concernant la date de mes sauvegardes, en début d'année prochaine les sauvegardes seront: sauvegarde_05_01_10, n'y aura t'il pas de soucis avec les sauvegardes antérieurs celles de décembre par exemple sauvegarde_25_12_09, ce que je veux dire est ce qu'il ne vas pas virer celle de janvier ?
en tous les cas, je te remercie infiniment, je vois que tu es un vrai spécialiste du batch, bonne soirée.
Re: comment supprimer la plus vieille sauvegarde ?
Posté : 16 mars 2009 23:36
par Batch_Man
Bonsoir
Effectivement avec For nous pouvons faire énormément de choses.
En faite je situe la commande dir /b /o-d /ad "D:\" qui va lister tous les dossiers du plus récent au plus ancien. ( par date de création )
Ce qui fera
DocumentsSave_20_03_09
DocumentsSave_13_03_09
DocumentsSave_06_03_09
DocumentsSave_27_02_09
DocumentsSave_20_02_09
DocumentsSave_13_02_09
Comme tu veux supprimer le 6ème dossier il faut sauter les 5 premiers, donc j'aurais tous les dossiers après le ème ( tu me suis toujours
)
Soit le plus ancien "DocumentsSave_13_02_09"
Comme je veux sauter les 5ers dossiers j'insère dans ma boucle skip=5 et tokens=* pour qu'il prenne tous les caractères.
Comme il liste du plus récent au plus ancien, il n'y aura normalement aucun problème pour Janvie / Décembre
De toute manière tu fais un script de test avant avec un Echo et tu verras bien
Moi je ne suis pas responsable lol
Pour for tu peux voir le tutoriel d'astase, le créateur de powerbatch ( PDF ):
ftp://anonymous.ftp.ovh.net/astase/wind ... _batch.pdf
Batch_Man
Re: comment supprimer la plus vieille sauvegarde ?
Posté : 17 mars 2009 20:03
par balad144
Je te remercie beaucoup Batch_Man pour toutes ces informations et aussi de ton aide.
c'est vraiment très sympa de ta part ...
je testerai tout ça vendredi.
je te souhaite une bonne semaine.
Fred
Re: comment supprimer la plus vieille sauvegarde ?
Posté : 17 mars 2009 23:18
par Batch_Man
Bonsoir,
Une bonne semaine de même !
Batch_Man