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 :

Script pour effacement récursif


Sujet :

Scripts/Batch

  1. #1
    Membre éclairé Avatar de Filippo
    Homme Profil pro
    Statisticien
    Inscrit en
    Mai 2004
    Messages
    864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Statisticien

    Informations forums :
    Inscription : Mai 2004
    Messages : 864
    Points : 881
    Points
    881
    Par défaut Script pour effacement récursif
    Bonjour,
    je cherche à faire un petit script qui efface tous les fichiers d'un lecteur dont la taille est supérieure à 1 Mo et la date de modification est inférieure au 01/01/2005.

    Est-ce possible dans un petit fichier bat ?

    Merci.
    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant

  2. #2
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut Re: Script pour effacement récursif
    Citation Envoyé par Filippo
    Est-ce possible dans un petit fichier bat ?
    Oui.
    et un petit batch, un !
    Code : 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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    @echo off
     rem TRI.CMD
     rem Supprime les fichiers d'un répertoire ayant une date de dernier accés antérieure à la date du jour.
     rem Attention si exécution vers 23h 59mn :-)
    
    :: Use codepage 437
    mode con: codepage select=437>nul
    
    
    
     rem mémorise le répertoire courant
    PUSHD
     rem Les variables crée dans ce batch ont une portée local, ie jusqu'a l'utilisation de EndLocal
    SetLocal
    
     rem  Extrait la partie jour de la variable d'environnment DATE contenant la date courante ( sous XP seulement )
    SET Jour=%DATE:~0,2%
     rem  Extrait la partie mois 
    SET Mois=%DATE:~3,2%
     rem  Extrait la partie année
    SET Annee=%DATE:~6,4%
     rem Permet le calcul de la date
     rem 27032004 >22042004
     rem 20040327<20040422
    SET DateCourante=%Annee%%Mois%%Jour%
    
     rem Répertoire de départ
    SET StartDirectory=C&#58;\temp
    cd /D "%StartDirectory%"
    
     rem Parcours le répertoire %StartDirectory%
    call &#58;&#58;Traite "%StartDirectory%"
      
     rem Parcours tous les sous-répertoire du répertoire %StartDirectory%
    For /F "tokens=*" %%I in &#40;'DIR /S /aD /B'&#41; do call &#58;&#58;Traite "%%I"
    
    Goto FIN
    
      rem -------------------------------------------------------------------------------------------
       
       &#58;Traite
         rem Se place dans le répertoire %1
        Title %1
        cd /D %~1
    
         rem Fichier contenant les fichiers cibles
        SET Directory_SortDate=%TEMP%
        SET SortDate=AllFile.txt
        SET SortDateFile=%Directory_SortDate%\%SortDate%
          
         rem Fichier final formaté
        SET Directory_Result=%TEMP%
        SET Result=Resultat.txt
        SET ResultFile=%Directory_Result%\%Result%
       
        Del %ResultFile%   
    
        rem Recherche uniquement les fichiers classés par date du dernier accés et sans séparateur de milliers pour la taille de fichier
        rem Affiche la date du dernier accés et supprime les lignes "parasite" en début et fin de commande DIR
       Echo Tri des fichiers
       DIR /a-D /oD /Ta /-C|Findstr /b "0 1 2 3" >%SortDateFile%
       
        rem Le fichier %SortDateFile% contient 4 champs/tokens&#58; Date heure taille nom 
        rem On récupére la date,qui est convertie en nombre, et le nom du fichier que l'on écrit dans un fichier intermédaire.
       Echo Modification de la date des fichiers
       For /F "tokens=1,2,3,4*" %%I in &#40;'type "%SortDateFile%"'&#41; do call &#58;&#58;SetDate %%I "%%L"
    
        rem Affiche les fichiers antérieure à la DateCourante
       FOR /F "Tokens=1,2 Delims=;" %%a IN &#40;'type "%ResultFile%"'&#41; DO IF &#40;%%a&#41; LSS &#40;%DateCourante%&#41; ECHO Fichier %%b &#58; %%a inférieure à %DateCourante%
        rem Retour à l'instruction appelante
       Goto &#58;EOF
       
         rem -------------------------------------------------------------------------------------------
       
          &#58;SetDate
           rem Reconstruit la date d'un fichier. Obtient un nombre en supprimant le délimiteur '/'
          for  /f "tokens=1-3 delims=/" %%A in &#40;'echo %1'&#41; do set MaDate=%%C%%B%%A
           rem Le paramétre %2 est écrit sans les guillements
          Echo %MaDate%;%~2>>%ResultFile%
           rem Retour à l'instruction appelante
          goto &#58;eof
       
         rem -------------------------------------------------------------------------------------------
      rem -------------------------------------------------------------------------------------------
       
    &#58;FIN
    echo %datecourante%
     rem supprime les variables inutiles
     rem remplace la suite d'instruction
     rem SET Jour=
     rem SET Mois=
     rem ...
    EndLocal
     rem Rétablie le répertoire courant
    POPD
    Title Traitement terminé &#58; %0
    Syntaxe d'XP si je me souviens bien.
    A tester et à adapter

    Le traitement se fait en deux passes
    1 on recherche avec la commande DIR les fichiers > 1 Mg
    2 on traite le fichier résultant de 1 pour filter la date

  3. #3
    Membre éclairé Avatar de Filippo
    Homme Profil pro
    Statisticien
    Inscrit en
    Mai 2004
    Messages
    864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Statisticien

    Informations forums :
    Inscription : Mai 2004
    Messages : 864
    Points : 881
    Points
    881
    Par défaut
    Super !
    Merci Laurent.

    Je teste demain.

    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant

  4. #4
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Filippo
    Super !
    Merci Laurent.
    De rien

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

Discussions similaires

  1. Script pour effacer des fichiers après x jours
    Par Chakalaka dans le forum Débuter
    Réponses: 4
    Dernier message: 14/04/2011, 18h55
  2. Choix pour un script pour effacer des fichiers
    Par mindover280 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 22/07/2007, 23h42
  3. script pour effacer doublons
    Par isachat666 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 20/10/2006, 10h52
  4. script pour demander une confirmation avant d effacer
    Par pierrot10 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 09/10/2006, 10h46
  5. Réponses: 2
    Dernier message: 16/08/2006, 14h47

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