Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

archivage et suppresion fichier

4 réponses
Avatar
Mickael
Bonjour,

Je doit faire un script DOS, mais je ne sais pas par ou commencer.
En faite mon script doit archiver un fichier par jour dans un répertoire.
Et l'on doit garder dans ce répertoire les 5 dernieres achives.
Bien sur c'est l'archive la plus anciennes qui est supprimée à chaque fois.

Mon problème c'est que je ne vois pas comment faire pour garder les 5
dernieres achive.

Merci de votre aide

4 réponses

Avatar
Mickael
Voici le script que j'ai fait :
Par contre j'ai un soucis car si un fichier comporte des espaces . Il ne
fait pas la copie.Comment faire ?

Merci


@rem initialisation des variables

set jour=%date:~7,2%
set mois=%date:~4,2%
set annee=%date:~10,4%

set repbak=c:archiarchive
set fichier=*
set nombre=5






@rem verification présence fichier
for /f %%w in ('dir /o:d /b') do move %%w
%repbak%backup.%jour%%mois%%annee%.txt
--> le problème est ici, le faire de faire un dir, la boucle for ne prend
pas le fichier complet avec vous une autre solution ???


@rem suppression des 5 derniers fichiers
for /f "skip=%nombre%" %%a in ('dir /a:-d /b "%répertoire%"') do del
%répertoire%%%a






Bonjour,

Je doit faire un script DOS, mais je ne sais pas par ou commencer.
En faite mon script doit archiver un fichier par jour dans un répertoire.
Et l'on doit garder dans ce répertoire les 5 dernieres achives.
Bien sur c'est l'archive la plus anciennes qui est supprimée à chaque fois.

Mon problème c'est que je ne vois pas comment faire pour garder les 5
dernieres achive.

Merci de votre aide



Avatar
Mickael
Annule et remplace les précédent message :


@rem initialisation des variables

set jour=%date:~7,2%
set mois=%date:~4,2%
set annee=%date:~10,4%

set repSrs=c:archisources
set repBak=c:archiarchive
set fichier=*
set nombre=5


@déplacement des fichiers
move %repSrs%*.* %repbak%

@rem suppression des 5 derniers fichiers
for /f "skip=%nombre%" %%a in ('dir /a:-d /b "%repBak%"') do del
%repBak%"%%a"

en faite mon problème est dans ma boucle for pour supprimer les fichiers, il
ne prend pas en compte les espaces. Comment faire ?


merci


Voici le script que j'ai fait :
Par contre j'ai un soucis car si un fichier comporte des espaces . Il ne
fait pas la copie.Comment faire ?

Merci


@rem initialisation des variables

set jour=%date:~7,2%
set mois=%date:~4,2%
set annee=%date:~10,4%

set repbak=c:archiarchive
set fichier=*
set nombre=5






@rem verification présence fichier
for /f %%w in ('dir /o:d /b') do move %%w
%repbak%backup.%jour%%mois%%annee%.txt
--> le problème est ici, le faire de faire un dir, la boucle for ne prend
pas le fichier complet avec vous une autre solution ???


@rem suppression des 5 derniers fichiers
for /f "skip=%nombre%" %%a in ('dir /a:-d /b "%répertoire%"') do del
%répertoire%%%a






Bonjour,

Je doit faire un script DOS, mais je ne sais pas par ou commencer.
En faite mon script doit archiver un fichier par jour dans un répertoire.
Et l'on doit garder dans ce répertoire les 5 dernieres achives.
Bien sur c'est l'archive la plus anciennes qui est supprimée à chaque fois.

Mon problème c'est que je ne vois pas comment faire pour garder les 5
dernieres achive.

Merci de votre aide





Avatar
Gilles LAURENT [MVP]
"Mickael" a écrit dans le message de
news:

Bonjour,

| @rem suppression des 5 derniers fichiers
| for /f "skip=%nombre%" %%a in ('dir /a:-d /b "%repBak%"') do del
| %repBak%"%%a"

for /f "tokens=* skip=5" %%a in ('dir /o:-d /a:-d /b "%repBak%"') do (
del "%repBak%%a"
)

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
Avatar
MCI \(ex do ré Mi chel la si do\) [MVP]
Bonsoir !

La méthode de Gilles est excellent, à condition que les fichiers
(d'archive) aient chacun un nom différent.

Or, il m'arrive souvent que des clients veuillent garder les 5 dernières
versions d'un ensemble de fichiers, dont les noms ne doivent pas
changer.

Dans ce cas là, une solution très simple, c'est de créer 5 sous
répertoires, et d'utiliser un batch ressemblant à ça :

md sauve
md sauve5
md sauve4
md sauve3
md sauve2
md sauve1
robocopy 4 sauve5 /MIR /FFT
robocopy 3 sauve4 /MIR /FFT
robocopy 2 sauve3 /MIR /FFT
robocopy 1 sauve2 /MIR /FFT
robocopy repdata sauve1 /MIR /FFT /R:2 /W:3

Je sais, on peut optimiser, mais, là, on a une bonne lisibilité.

Il suffit de lancer ce batch une fois par jour, avec les tâches
planifiées, ou un autre moyen similaire.

Rappel : robocopy est fourni en standard avec Vista (ultimate ?) mais
fonctionne très bien avec XP ou 2000, ou les windows-serveurs. Mais, on
pourrait utiliser XCOPY, à condition de commencer par vider le
répertoire sauve5

@+

Michel Claveau