Rechercher : dans
Par :

Fichier batch permettant suppression fichiers

Dernière réponse le 19 sep 2009 à 19:10:34 Robin, le 17 avr 2007 à 21:26:23 
 Signaler ce message aux modérateurs

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...

Configuration: Windows XP
Firefox 2.0.0.3

Meilleures réponses pour « Fichier batch permettant suppression fichiers » dans :
Qu'est-ce qu'un fichier batch ? VoirPOURQUOI FAIRE ? COMMENT FAIRE ? Préalables Création du fichier POURQUOI FAIRE ? Windows est fourni avec une version du DOS, ce qui permet d'exploiter les fonctionnalités et l'enchaînement de commandes définies dans un script. Un fichier...
[Windows] Impossible de supprimer un fichier ou un dossier VoirSi Windows n'arrive pas à supprimer un fichier ou un dossier, la cause peut être l'une des suivantes : Le fichier ou le dossier à supprimer est utilisé par un processus du système Le dossier à supprimer contient des fichiers ou dossiers cachés ...
Sed - Supprimer une ou plusieurs lignes d'un fichier VoirSupprimer une (ou plusieurs) ligne(s) d'un fichier Syntaxe sed '{[/]||[/]}d' sed '{[/][,][/]d' /.../ = délimiteurs n = le numéro de ligne chaîne = la chaîne contenue dans la...

1

CH4NCE, le 17 avr 2007 à 21:46:04
  • +1

Coucou.
Je pense pouvoir t'aider.
Copies-colles ton batch et dis moi ce que tu veux exactement.
A+ c'est dur a faire une signature ;)

Répondre à CH4NCE

2

Robin, le 17 avr 2007 à 22:07:52

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...

Répondre à Robin

3

CH4NCE, le 17 avr 2007 à 23:50:58

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 ;) c'est dur a faire une signature ;)

Répondre à CH4NCE

4

Robin, le 18 avr 2007 à 00:05:09

Merci, c'est super sympa...
A+

Répondre à Robin

14

Willy Nande, le 22 sep 2008 à 11:27:42

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

15

Willy Nande, le 22 sep 2008 à 11:36:41

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 à Willy Nande

18

qinglong, le 14 mai 2009 à 10:16:00
  • +1

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 à qinglong

5

CH4NCE, le 18 avr 2007 à 01:08:55

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+ c'est dur a faire une signature ;)

Répondre à CH4NCE

6

Rmo5050, le 20 avr 2007 à 00:08:43

Génial! ;-))

Un tout grand merci, ça fonctionne à merveille.

A une prochaine peut-être...

Merci

Répondre à Rmo5050

7

krlou, le 31 jan 2008 à 10:56:35

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 ^^

Répondre à krlou

8

Rmo5050, le 31 jan 2008 à 20:18:05

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 à Rmo5050

9

dolu07, le 5 fév 2008 à 17:53:07

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.

Répondre à dolu07

10

chaker, le 12 fév 2008 à 18:43:00

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

Répondre à chaker

11

JPC, le 19 fév 2008 à 13:45:56

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.

Répondre à JPC

12

Tgarnxx, le 24 fév 2008 à 07:52:34

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

Répondre à Tgarnxx

13

hc-ch, le 8 aoû 2008 à 11:08:13

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 !

Répondre à hc-ch

16

bob, le 15 avr 2009 à 10:48:24
  • +2

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 à bob

17

zip, le 28 avr 2009 à 12:30:25
  • +2

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 à zip

20

jms667, le 21 aoû 2009 à 15:58:03

Excellent bob et zip.
Merci beaucoup, ça tourne déjà en prod ;-)

Répondre à jms667

19

wild_child, le 3 jui 2009 à 16:32:41

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"

Répondre à wild_child

21

diction, le 16 sep 2009 à 01:38:04

Utilise del a la place de rd

Répondre à diction

22

Kwoa, le 19 sep 2009 à 19:09:34

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

Répondre à Kwoa

23

Kwoa, le 19 sep 2009 à 19:09:55

J'ai creer un batch qui permet de supprimer tout les fichiers dans un repertoire en precisant son extension

[code]
@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
/code

Répondre à Kwoa

24

 Kwoa, le 19 sep 2009 à 19:10:34

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

Répondre à Kwoa