IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Supprimer des fichiers situés dans des sous dossiers et dossiers [Batch]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 625
    Par défaut Supprimer des fichiers situés dans des sous dossiers et dossiers
    Bonjour,

    J'aimerai savoir si il y a un moyen se supprimer tout les fichiers vieux de 10 jours situés dans plusieurs sous dossiers et dossiers.

    Merci

  2. #2
    Membre chevronné

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 359
    Billets dans le blog
    2
    Par défaut
    Tu peux essayer quelque chose dans ce genre

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    @echo off
    setlocal enabledelayedexpansion
     
    set "Year=%DATE:~6,4%"
    set "Month=%DATE:~3,2%"
    set "Day=%DATE:~0,2%"
     
    set /a "TimeStamp=(((Year * 365) + ((Month - 1) * 30)) + Day) - 10"
     
    for /r "%cd%\test" %%a in (*) do (
      for /f "tokens=1" %%b in ("%%~ta") do (
        for /f "tokens=1-3 delims=/" %%c in ("%%b") do (
          set /a "FileTimeStamp=(((%%e * 365) + ((%%d - 1) * 30)) + %%c)"
          if !FileTimeStamp! LSS %TimeStamp% del /q "%%~dpnxa"
        )
      )
    )
     
    pause
    Le gourou dicte la ligne (de commande) à suivre ...

    Penser à lire le Tutoriel Batch ou a consulter la FAQ Batch et ses contributions,
    ainsi que le Cour sur la ligne de commande et des scripts

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 625
    Par défaut
    merci beaucoup,si je desire augmenter le nombre de jour(vieux de 30 jours ) quel parametres faut il changer?

  4. #4
    Membre chevronné

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 359
    Billets dans le blog
    2
    Par défaut
    Dans la ligne qui créé le timestamp de référence, "10" est le nombre a changé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set /a "TimeStamp=(((Year * 365) + ((Month - 1) * 30)) + Day) - 10"
    Le code se déroule ainsi:

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    @echo off
    setlocal enabledelayedexpansion
     
    set "Year=%DATE:~6,4%"
    set "Month=%DATE:~3,2%"
    set "Day=%DATE:~0,2%"
     
    :: Création d'un timestamp de référence (la date courante moins le nombre de jour voulue).
    set /a "TimeStamp=(((Year * 365) + ((Month - 1) * 30)) + Day) - 10"
     
    :: Le répertoire "%cd%\test" est parcouru à la recherche de tous les fichiers
    ::   La date de création du fichier est récupèré
    ::     La date de création du fichier est parsé
    ::       Un timestamp de la date de création du fichier est créé
    ::       Si le timestamp de la date de création du fichier est inférieur au timestamp  de référence, le fichier est supprimé.
    for /r "%cd%\test" %%a in (*) do (
      for /f "tokens=1" %%b in ("%%~ta") do (
        for /f "tokens=1-3 delims=/" %%c in ("%%b") do (
          set /a "FileTimeStamp=(((%%e * 365) + ((%%d - 1) * 30)) + %%c)"
          if !FileTimeStamp! LSS %TimeStamp% del /q "%%~dpnxa"
        )
      )
    )
     
    pause
    Le gourou dicte la ligne (de commande) à suivre ...

    Penser à lire le Tutoriel Batch ou a consulter la FAQ Batch et ses contributions,
    ainsi que le Cour sur la ligne de commande et des scripts

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 625
    Par défaut
    Petite question j'ai un fichier qui a 39 jours(créé a 10h15 ), j'ai fait qu'en sorte il soit supprimer à 39 jours ( pour test,test effectue à 12h) et impossible,il se supprime si je le mets à 38jours .est ce qu'il y aurait une subtilité?
    est ce que l'execution peut se faire sans que l'on click dessus,j'aimerai qui s'execute via le planificateur de tache.le planificateur le lance bien ,mais il ne purge pas les fichiers.

  6. #6
    Membre Expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Par défaut
    Salut,

    perso j'utiliserais FORFILES :

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    @echo off
    forfiles /p "C:\ton\chemin" /S  /D -39 /C "cmd /c del @path"

    à adapter à ta situation...


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 09/09/2011, 23h07
  2. Réponses: 5
    Dernier message: 21/02/2011, 19h51
  3. Réponses: 2
    Dernier message: 14/04/2009, 13h41
  4. Réponses: 45
    Dernier message: 14/02/2008, 15h41
  5. Réponses: 6
    Dernier message: 22/05/2006, 13h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo