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.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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.
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
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
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.
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
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
"Mickael" <Mickael@discussions.microsoft.com> a écrit dans le message de
news:0A07932B-C97A-4825-9ADD-B8B48CCE46AD@microsoft.com
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
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
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 :
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
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