Posez votre question Signaler

Fichier batch permettant suppression fichiers

Robin - Dernière réponse le 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...
Lire la suite 
Réponse
+14
moins plus
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+
Rmo5050 13Messages postés vendredi 9 mars 2007Date d'inscription 14 juin 2010Dernière intervention - 20 avril 2007 à 00:08
Génial! ;-))

Un tout grand merci, ça fonctionne à merveille.

A une prochaine peut-être...

Merci
Répondre
Ajouter un commentaire
Annonces
 
moins plus
Réponse
+5
moins plus
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.
Ajouter un commentaire
Annonces
 
moins plus
Réponse
+2
moins plus
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
Ajouter un commentaire
Réponse
+1
moins plus
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.
nemesis2488- 18 mars 2010 à 12:46
utilise cobian backup il te permettra de faire cela
Répondre
Ajouter un commentaire
Réponse
+0
moins plus
coucou.
Je pense pouvoir t'aider.
Copies-colles ton batch et dis moi ce que tu veux exactement.
A+
CH4NCE 619Messages postés jeudi 7 décembre 2006Date d'inscription 8 août 2013Dernière intervention - 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 ;)
Répondre
Robin- 18 avril 2007 à 00:05
Merci, c'est super sympa...
A+
Répondre
Willy Nande- 22 sept. 2008 à 11:27
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.
Répondre
Willy Nande- 22 sept. 2008 à 11:36
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.
Répondre
qinglong 1Messages postés jeudi 14 mai 2009Date d'inscription 14 mai 2009Dernière intervention - 14 mai 2009 à 10:16
with windows date format dd/mm/yyyy
if you have a different date format ... change the bold lines
@echo off
cls
rem define the working folder
set v_folder=D:\DocGen\*.*
rem define the number of day
set nb_day=7
rem number of day per month
set nb_mth=31
set v_date=%date%
rem set v_date=03/05/2020
set v_day=%v_date:~0,2%
set v_mth=%v_date:~3,2%
set v_yrs=%v_date:~6,4%

set v_sep=%v_date:~2,1%
if %v_day:~0,1%==0 set v_day=%v_day:~1,1%
set /a v_day=%v_day%-%nb_day%
if %v_mth:~0,1%==0 set v_mth=%v_mth:~1,1%
if %v_day% LSS 1 set /a v_mth=%v_mth%-1
if %v_mth% LSS 1 (set /a v_yrs=%v_yrs%-1
set v_mth=12)
rem number of day per month for April,June,september and november
if %v_mth% EQU 4 set /a nb_mth=30
if %v_mth% EQU 6 set /a nb_mth=30
if %v_mth% EQU 9 set /a nb_mth=30
if %v_mth% EQU 11 set /a nb_mth=30
set /a v_res=1
rem number of day per month for february
if %v_mth% EQU 2 (set /a v_res=0
set /a v_div=%v_yrs%/4
set /a v_ret=%v_div%*4
set /a v_res=%v_yrs%-%v_ret%
set /a nb_mth=28)
if %v_res% EQU 0 set /a nb_mth=29
if %v_day% LSS 1 set /a v_day=%nb_mth%+%v_day%
rem format v_day and v_month
if %v_day% LSS 10 set v_day=0%v_day%
if %v_mth% LSS 10 set v_mth=0%v_mth%
rem create the filter
set v_filter=%v_day%%v_sep%%v_mth%%v_sep%%v_yrs%
@echo Delete file from %v_filter% into %v_folder% - %nb_mth%
set v_folder=dir /b /s %v_folder%
set v_filter=findstr /l /c:"%v_filter%"
for /f "tokens=*" %%c in ('%v_folder%') do (
set v_file=%%c
call :commande
)
goto :eof
:commande
for /f %%c in ('dir "%v_file%" ^|%v_filter%') do del %v_file%/Q
rem for /f %%c in ('dir "%v_file%" ^|%v_filter%') do @echo %v_file%/Q
Répondre
Ajouter un commentaire
Réponse
+0
moins plus
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 ^^
Rmo5050- 31 janv. 2008 à 20:18
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
Répondre
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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 !
bob- 15 avril 2009 à 10:48
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.
Répondre
zip- 28 avril 2009 à 12:30
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+
Répondre
jms667- 21 août 2009 à 15:58
Excellent bob et zip.
Merci beaucoup, ça tourne déjà en prod ;-)
Répondre
Ajouter un commentaire
Réponse
+0
moins plus
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"
Ajouter un commentaire
Réponse
+0
moins plus
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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.
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 ?
Répondre
akh- 29 avril 2011 à 18:22
ens ou en soe ns?
Répondre
NOK980- 12 mai 2011 à 14:43
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
Répondre
Ajouter un commentaire
Réponse
+0
moins plus
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
BerlinCalling 2Messages postés mardi 28 mai 2013Date d'inscription 28 mai 2013Dernière intervention - 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!
Répondre
Ajouter un commentaire
Ce document intitulé «  Fichier batch permettant suppression fichiers  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.