Fichier batch permettant suppression fichiers

Robin -  
BerlinCalling Messages postés 2 Statut Membre -
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

15 réponses

Résumé de la discussion

La création d'un fichier Batch permettant de nettoyer régulièrement un dossier de sauvegarde selon une plage de dates et d'interroger l'utilisateur au lancement est au cœur du sujet. Plusieurs solutions et scripts proposent la suppression ciblée de fichiers selon le mois ou le jour, et des méthodes pour planifier l'exécution, notamment via des tâches planifiées. Des échanges évoquent des problèmes de compatibilité régionale et des erreurs dans le calcul du mois à supprimer, avec des corrections proposées pour janvier et des variantes conditionnelles. Par ailleurs, certains envisagent des approches alternatives comme la suppression directe des anciennes sauvegardes ou l'utilisation de scripts pour libérer l'espace avant le lancement, et envisagent aussi des solutions de sauvegarde incrémentielle.

Bobot (l'IA à votre service)
  1. CH4NCE Messages postés 619 Date d'inscription   Statut Membre Dernière intervention   732
     
    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
    1. Rmo5050 Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
       
      Génial! ;-))

      Un tout grand merci, ça fonctionne à merveille.

      A une prochaine peut-être...

      Merci
      0
  2. dolu07
     
    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
  3. chaker
     
    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
  4. CMP Messages postés 2026 Statut Membre 350
     
    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
    1. nemesis2488
       
      utilise cobian backup il te permettra de faire cela
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. CH4NCE Messages postés 619 Date d'inscription   Statut Membre Dernière intervention   732
     
    coucou.
    Je pense pouvoir t'aider.
    Copies-colles ton batch et dis moi ce que tu veux exactement.
    A+
    0
    1. Robin
       
      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
    2. CH4NCE Messages postés 619 Date d'inscription   Statut Membre Dernière intervention   732 > Robin
       
      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
    3. Robin > CH4NCE Messages postés 619 Date d'inscription   Statut Membre Dernière intervention  
       
      Merci, c'est super sympa...
      A+
      0
    4. Willy Nande
       
      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
    5. Willy Nande
       
      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
  7. krlou
     
    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
    1. Rmo5050
       
      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
  8. JPC
     
    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
  9. Tgarnxx
     
    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
  10. hc-ch
     
    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
    1. bob
       
      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
      1. zip > bob
         
        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
      2. jms667 > zip
         
        Excellent bob et zip.
        Merci beaucoup, ça tourne déjà en prod ;-)
        0
  11. wild_child
     
    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
  12. Kwoa
     
    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
  13. CMP Messages postés 2026 Statut Membre 350
     
    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
  14. CMP
     
    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
    1. the_macraft
       
      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
    2. akh
       
      ens ou en soe ns?
      0
    3. NOK980
       
      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
  15. BerlinCalling Messages postés 2 Statut Membre
     
    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
    1. BerlinCalling Messages postés 2 Statut Membre
       
      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