Fichier batch permettant suppression fichiers

Fermé
Robin - 17 avril 2007 à 21:26
BerlinCalling Messages postés 2 Date d'inscription mardi 28 mai 2013 Statut Membre Dernière intervention 28 mai 2013 - 28 mai 2013 à 14:04
Bonsoir,
Je souhaite créer un fichier Batch me permettant de faire régulièrement le ménage dans un dossier dans lequel mon logiciel de backup stock les fichiers de sauvagarde. Je souhaite par la même occasion une sorte de filtre sur date.

Je m'explique, j'aimerais que quand je lance le batch, il me propose d'entrer entre quelle date et quelle date de fichier je souhaite supprimer le contenu du dossier correspondant.

Est-ce que quelqu'un peut m'aider?

Merci d'avance...
A voir également:

15 réponses

CH4NCE Messages postés 620 Date d'inscription jeudi 7 décembre 2006 Statut Membre Dernière intervention 8 août 2013 707
18 avril 2007 à 01:08
Et voilà ;)
copie colles ce code dans un fichier texte puis renommes ce fichier CeQueTuVeux.bat
Mets le fichier .bat dans le repertoire avec tes logs puis executes le.
Cela va créer la tache planifiée et un fichier purgelog.bat qui sera executé tous les 1er de chaque mois.
CLS
@echo off
REM on regarde le chemin de l'executable parce que tu me l'as pas donné ;)
set chemin=%cd%
REM On programme les taches planifiées.
REM A 01h00 tous les premiers de chaque mois on exécute purgelog.bat
AT 01:00 /interactive /EVERY:01 cmd /c "%chemin%\purgelog.bat"

REM On crée le batch au bon endroit

echo REM on verifie la date pour en deduire le mois en cours et en faire la variable %%suppr%%. > purgelog.bat
echo set suppr=%%date:~3,2%%>> purgelog.bat
echo. >> purgelog.bat
echo. >> purgelog.bat
echo REM On donne -2 a %%suppr%% >> purgelog.bat
echo IF %%suppr%%==01 set suppr=11>> purgelog.bat
echo IF %%suppr%%==02 set suppr=12>> purgelog.bat
echo IF %%suppr%%==03 set suppr=01>> purgelog.bat
echo IF %%suppr%%==04 set suppr=02>> purgelog.bat
echo IF %%suppr%%==05 set suppr=03>> purgelog.bat
echo IF %%suppr%%==06 set suppr=04>> purgelog.bat
echo IF %%suppr%%==07 set suppr=05>> purgelog.bat
echo IF %%suppr%%==08 set suppr=06>> purgelog.bat
echo IF %%suppr%%==09 set suppr=07>> purgelog.bat
echo IF %%suppr%%==10 set suppr=08>> purgelog.bat
echo IF %%suppr%%==11 set suppr=09>> purgelog.bat
echo IF %%suppr%%==12 set suppr=10>> purgelog.bat
echo. >> purgelog.bat
echo. >> purgelog.bat
echo REM On supprime tous les fichiers portant %%suppr%%. >> purgelog.bat
echo del "%chemin%\Sauvegarde????-%%suppr%%-?????;??;??.zip" >> purgelog.bat
exit

Si cela te parait trop compliqué télécharges le fichier ici :
http://cqgclub.dyndns.org/BDC/telech/InstallPurgelog.bat et executes le dans le repertoire de tes logs.
Je l'ai testé mais tiens moi au courant quand même.
Si ton ordinateur n'est pas allumé à l'heure ou la tâche doit s'executer ben je sais plus si ça marche quand même mais c'est pas grave, vas dans le repertoire des logs et double clic sur purgelog.bat.
A+
14
Rmo5050 Messages postés 13 Date d'inscription vendredi 9 mars 2007 Statut Membre Dernière intervention 14 juin 2010
20 avril 2007 à 00:08
Génial! ;-))

Un tout grand merci, ça fonctionne à merveille.

A une prochaine peut-être...

Merci
0
Bonjour,

Merci Ch4nce pour le script, juste une erreur pour les lignes du choix du mois, à remplacer par celles-ci :

echo REM On donne -2 a %%suppr%% >> purgelog.bat
echo IF %%suppr%%==01 (set suppr=11 else (>> purgelog.bat
echo IF %%suppr%%==02 (set suppr=12 else (>> purgelog.bat
echo IF %%suppr%%==03 set suppr=01>> purgelog.bat
echo IF %%suppr%%==04 set suppr=02>> purgelog.bat
echo IF %%suppr%%==05 set suppr=03>> purgelog.bat
echo IF %%suppr%%==06 set suppr=04>> purgelog.bat
echo IF %%suppr%%==07 set suppr=05>> purgelog.bat
echo IF %%suppr%%==08 set suppr=06>> purgelog.bat
echo IF %%suppr%%==09 set suppr=07>> purgelog.bat
echo IF %%suppr%%==10 set suppr=08>> purgelog.bat
echo IF %%suppr%%==11 set suppr=09>> purgelog.bat
echo IF %%suppr%%==12 set suppr=10 ))>> purgelog.bat

Si nous étions au mois de janvier, la variable suppr à 01 prenait la valeur 11 puis reprenait la valeur 09 en arrivant au 11e IF.
5
Bonjour

Excuse moi je ne comprend pas la syntaxe

echo IF %%suppr%%==01 (set suppr=11 else (>> purgelog.bat
echo IF %%suppr%%==02 (set suppr=12 else (>> purgelog.bat

chez moi j ai un probleme avec le mois de janvier avec la version de ch4ance, au mois de janvier il supprime les fichier du mois octobre

Merci pour ton aide
2
CMP Messages postés 1946 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 5 décembre 2015 349
11 mars 2010 à 17:19
Bonjour,
merci de ton intervention, j'ai aussi pensé a ça, si tu sais comment je pourrais le faire autrement , je serais prenneur.

Etant donné que mon disque c: de 160go contient environ 90go et que mon disque de sauvegarde e: a la même capacité, soit 160go, je n'ai pas la place pour 2 sauvegardes .

Idéalement faudrait que je fasse une sauvegarde incrementiel ( sais plus si le mot est exact), mais dans la version gratos de Macrium Reflect ce n'est pas possible, si tu sais comment faire, ce serait génial.

Je ne veux pas changer le programme de backup, parce que Macrium me permets en cas de pepin, de "visionner" les details de la sauvegarde et d'aller chercher n'importe quel dossier ou fichier, sans restaurer tout la sauvegarde et je trouve ça vraiment bien.

A part de sauvegarder sur un serveur, il n'éxiste pas vraiment de solution en béton, me protegant de vol, feu, etc.
dans le cas ou ça plante pendant la sauvegarde, je peux juste éspèrer que mon c: ne plante pas en même temps.

je fais de temps en temps une sauvegarde de mes documents, mes images, etc.sur DVD.

merci a l'avance pour toute idées ou suggestions.
1
nemesis2488
18 mars 2010 à 12:46
utilise cobian backup il te permettra de faire cela
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
CH4NCE Messages postés 620 Date d'inscription jeudi 7 décembre 2006 Statut Membre Dernière intervention 8 août 2013 707
17 avril 2007 à 21:46
coucou.
Je pense pouvoir t'aider.
Copies-colles ton batch et dis moi ce que tu veux exactement.
A+
0
En fait, le batch n'est pas fait (vu que je ne sais pas comment le faire ;-)

Le but est le suivant :

Dans mon dossier 'Sauvegarde', il y a tous les jours un nouveau fichier de sauvagarde nommé avec la date du jour comme ci-après :

'Sauvegarde2007-02-24 22;34;24.zip'
'Sauvegarde2007-02-25 22;34;24.zip'
'Sauvegarde2007-02-26 22;34;24.zip'
'Sauvegarde2007-02-27 22;34;24.zip'
'Sauvegarde2007-02-28 22;34;24.zip'

Donc ce dossier s'allourdit de jour en jour et j'aimerais avoir un batch qui me permette de supprimer dans le dossier en question toutes les archives que je ne souhaite pas garder parce que trop anciennes.

L'idéal serait donc que tous les fichiers plus anciens que 30 jours disparaissent ou alors que seules les 20 dernières sauvegardes soient gardées.

J'espère que je suis plus clair de cette manière...
0
CH4NCE Messages postés 620 Date d'inscription jeudi 7 décembre 2006 Statut Membre Dernière intervention 8 août 2013 707 > Robin
17 avril 2007 à 23:50
oki. Donc garder les 20 derniers ou garder les 30 derniers.
On va faire plus simple et arrondir au mois. Chaque 1er de chaque mois le programme te supprimera les fichiers du mois d'avant le mois dernier ;)
Je te fais ça ;)
0
Robin > CH4NCE Messages postés 620 Date d'inscription jeudi 7 décembre 2006 Statut Membre Dernière intervention 8 août 2013
18 avril 2007 à 00:05
Merci, c'est super sympa...
A+
0
Dans mon dossier 'Log', il y a tous les jours au moins 10 nouveaux fichiers log nommé differenment sans date du jour comme ci-après :

dsdsfttssvsvsvssgetetetete-gdg-d.log
gdgdtetetet-ddo-ofofofo-fhjfhfhp.log
willllleyeyey-erereret-dgge-err-rr-ro.log

Donc ce dossier s'allourdit de jour en jour et j'aimerais avoir un batch qui me permette de supprimer dans le dossier en question toutes les archives de 7 jours que je ne souhaite pas garder parce que trop anciennes.

N.B: le chemin du repertoire log depend de la mchine.
0
Dans mon dossier 'Log', il y a tous les jours au moins 10 nouveaux fichiers log nommé differenment sans date du jour comme ci-après :

dsdsfttssvsvsvssgetetetete-gdg-d.log
gdgdtetetet-ddo-ofofofo-fhjfhfhp.log
willllleyeyey-erereret-dgge-err-rr-ro.log

Donc ce dossier s'allourdit de jour en jour et j'aimerais avoir un batch qui me permette de supprimer dans les fichiers log de ce repertoire dossier en question toutes les archives de 7 jours que je ne souhaite pas garder parce que trop anciennes. Je souaite garder l'historique des deux derniers jours seulement.

N.B: le chemin du repertoire log depend de la machine.

Je sollicite votre aide.
0
Désolé de faire revenir le sujet autant de temps après, mais je suis tombé sur ce script par hasard...

Une chose que je ne comprend pas dans ton script Ch4nce :

Tu récupères le mois en cours dans suppr et tu lui affecte -2 . ==> Ok
Tu testes sur les valeurs possibles de suppr ==> Ok

Sauf que dans tes valeurs, suppr ne va t-il pas avoir comme valeurs possibles de -1 à 10 et non de 1 à 12 ?

Ca ne change pas grand chose au fonctionnement mais c'est juste pour vérifier car sinon, je ne comprend pas le script ^^
0
Hello,
Merci pour ton msg mais je n'ai pas la réponse.

Regarde directement avec Ch4nce vu que c'est lui qui a trouvé le "truc".

Bonne soirée
0
Normal que tu as un probleme avec le mois de janvier et aussi février.

La bonne syntaxe est celle de dolu07.

Chez Ch4nce, si suppr=01, le premier IF remplace suppr par 11, puis le 11ième IF le remplace par 09 -->>> ERREUR

Chez Dolu07, le premier IF remplace suppr par 11 puis n'exécute pas les IF suivant grace à la commande ELSE (
Même Chose pour le 2ième IF si mois de février.
Pour les autres mois, il n'y a pas de double remplacement, donc pas besoin de ELSE.

Les 2 "))" à la fin du script sont la pour fermer les 2 "ELSE (" du premier et deuxième IF.
0
Bonjour,
Super votre script . Je voudrais faire la même chose , mais toute les semaines.
La modif du .bat serait t'elle lourde ou pas ?
Merçi
0
Bonjour,

J'ai récuperé le batch ci-dessus et si je le lance dans mon répertoire, il me supprime les fichiers les plus récents et conserve les plus vieux... Je ne comprends pas ou est le problème, peut-être une histoire de paramètres régionaux ? Je suis sous Windows 2003 Serveur en anglais.

Si quelqu'un pouvait me donner un coup de main ça serait sympa, merci !
0
bonjour,
je sais que les posts datent un peu mais ça peut toujours servir...
une autre méthode est de sauter les x premiers fichiers comme suit (à copier dans un bat) :

for /F "skip=3" %%A IN ('dir monrepertoire\*.* /O:-D /B') do (
del /F/Q %%A
)

explications :
for /F "skip=3"
=> parcours le résultat de la commande entre parenthèses sans traiter les 3 premiers résultats.
dir monrepertoire\*.* /O:-D /B
=> /O:-D tri par date du plus récent au plus vieux
=> /B permet de ne récupérer que le nom du fichier

Cette commande garde que les 3 derniers fichiers de monrepertoire.
0
Merci Bob !, c'est exactement ce que je cherchais (avec quand meme un petite modification sur la suppression)

for /F "skip=5" %%A IN ('dir F:\test\*.* /O:-D /B') do (del /F/Q F:\TEST\%%A)

A+
0
jms667 > zip
21 août 2009 à 15:58
Excellent bob et zip.
Merci beaucoup, ça tourne déjà en prod ;-)
0
salu a tous

je suis nouveau dans la programmation et tous
je veux savoir comment utuliser la commende pour supprimer 'rd' ou si y'a un autre moyen
voici qes que j'ai fait moi mais sa tourne pas

echo off
cls
rd c:\documents and settings\administrateur\bureau\Nouveau Image bitmap.bmp
pause

comme vous le voyez je ne sais pas utulisez "rd"
0
utilise del a la place de rd
0
j'ai creer un batch qui permet de supprimer tout les fichiers dans un repertoire en precisant son extension


@echo off
color a
title Supprimeur By kwoa
:deb
echo ÉÍÍÍÍÍÍÍÍ»
echo º-=Kwoa=-º
echo ÈÍÍÍÍÍÍÍͼ
set /p direction=Entrez le chemin :
echo cd %direction%
CD %direction%
set /p ext=Quel format de fichiers voulez vous effacer ?
echo 1 : Oui
echo 2 : Non
echo Etes vous sure de vouloir effacer les fichier %ext% ?
set /p confirmation=
if %confirmation%==1 del *%ext%
if %confirmation%==2 exit
:erreur
echo Ce chemin est introuvable veuillez reesayer
pause >nul
goto deb
0
CMP Messages postés 1946 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 5 décembre 2015 349
7 mars 2010 à 03:42
Bonjour, j'aimerais que quelq'un me fasse un fichier batch pour l'action suivante:

Je fais des sauvegardes tous les semaines avec macrium reflect, ( sauvegarde complet [image] de mon disque C: de 160 go sur un autre disque E: de 160 go .

le problemè est le suivant ;

1.étant donné que jutilise un peu plus de la moitié, environs 90 go présentement sur mon c: je n'ai pas de place pour 2 images.

2. si je veux faire une sauvegarde automatique il faut que je pense de supprimer manuellement mon image avant de pouvoir copier un nouveau , parce que j'utilise macrium reflect version gratuit, on peut planifier automatiquement la sauvegarde, mais il n'y a pas d'option de ecraser l'image existante et ça crée une nouvelle image a chaque execution.

3.je ne sais pas du tout comment faire pour effacer cet image automatiquement. si quelq'un pourrait me faire le fichier bat, je pourrais alors créer un tâche planifié et faire executer ce bat 5 minutes avant la tâche automatique de sauvegarde il y aura alors toujours de la place pour la nouvelle sauvegarde.

le chemin d'accès a cet image de sauvegarde que je veux effacer automatiquement est:
E:\Reflect-Backup\CAB4632BB7CC3622-00-00.mrimg

PS. CAB4632BB7CC3622-00-00.mrimg est le nom de cette sauvegarde, mais macrium reflect donne un nom different a chaque sauvegarde, par contre l'extension du fichier est toujours ".mring"

je serait très heureux si vous pourriez m'aider, merci a l'avance !

cmp725@gmail.com
0
J'ai finalement trouvé par moi même après de long recherches: ( je ne connais absolument rien de ce langage )

c'est une toute petite commande pour règler un "gros" problème et la solution dans mon cas est :

monexemple.bat
@echo off
del /Q "E:\Reflect-Backup\*.mrimg"

ensuite j'ai crée une tâche planifié avec comme chemin d'accès ce fichier.bat et je suis capable de le faire executer et ça me permet d'éffacer la sauvegarde existante automatiquement juste avant que mon backup se lance et il y aura toujours de l'éspace sur mon disque pour la nouvelle sauvegarde.

tout fonctionne parfaitement.
0
the_macraft
11 mars 2010 à 15:08
Bonjour

Je pense pas que ce sois la bonne méthode.

Supprimer une unique sauvegarde avant d'en créer un nouvelle ...

Que feras tu si la nouvelle sauvegarde plante ?
0
ens ou en soe ns?
0
bonjour,
quelle serait la syntaxe exacte pour un batch qui permettrait de supprimer les fichiers (que les fichiers, sans les répertoires eux-mêmes et sans demande de confirmation car planification la nuit);
par exemple pour les répertoires suivants :
C:\Documents and Settings\moi\Local Settings\Historique
C:\Documents and Settings\moi\Local Settings\TEMP
C:\RECYCLER
(le répertoire corbeille n'a pas d'adresse ?)

merci
0
BerlinCalling Messages postés 2 Date d'inscription mardi 28 mai 2013 Statut Membre Dernière intervention 28 mai 2013
28 mai 2013 à 13:00
Bonjour tous le monde,

Je remonte à mon tour ce sujet car j'aurais exactement besoin de ce programme! Je m'explique: j'aimerais que le contenu du dossier suivant (C:\Users\THA0EE\Desktop\test_tausch_ordner) soit, le 1er de chaque mois de l'année à 9h du matin, supprimé.

Je n'ai malheureusement pas de connaissances assez précises de comment utiliser un fichier Batch mais cela m'aiderait énormément si vous pouviez me donner un coup de main.

Merci d'avance pour votre aide!
Berlin Calling
0
BerlinCalling Messages postés 2 Date d'inscription mardi 28 mai 2013 Statut Membre Dernière intervention 28 mai 2013
28 mai 2013 à 14:04
Pour être précis, ce serait pour supprimer simultanément le contenu de plusieurs dossiers
(ex: C:\Users\THA0EE\Desktop\test_tausch_ordner C:\Users\THA0EE\Desktop\Mes_documents
C:\C:\Users\THA0EE\Desktop\Dossier_perso

etc...

Merci beaucoup!
0