comment supprimer la plus vieille sauvegarde ?

Une difficulté, une précision posez vos questions

Modérateur : WIN32-[GG]

Répondre
balad144
Batcheur occasionnel
Messages : 3
Enregistré le : 14 mars 2009 12:54

comment supprimer la plus vieille sauvegarde ?

Message 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.
Batch_Man
King Of Batch
Messages : 64
Enregistré le : 09 janv. 2009 00:01

Re: comment supprimer la plus vieille sauvegarde ?

Message 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
balad144
Batcheur occasionnel
Messages : 3
Enregistré le : 14 mars 2009 12:54

Re: comment supprimer la plus vieille sauvegarde ?

Message 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.
Batch_Man
King Of Batch
Messages : 64
Enregistré le : 09 janv. 2009 00:01

Re: comment supprimer la plus vieille sauvegarde ?

Message 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 :D )

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 :roll: ;)

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
balad144
Batcheur occasionnel
Messages : 3
Enregistré le : 14 mars 2009 12:54

Re: comment supprimer la plus vieille sauvegarde ?

Message 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
Batch_Man
King Of Batch
Messages : 64
Enregistré le : 09 janv. 2009 00:01

Re: comment supprimer la plus vieille sauvegarde ?

Message par Batch_Man »

Bonsoir,

Une bonne semaine de même !

Batch_Man
Répondre