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 :

Effacement du fichier le plus vieux jusqu'a concurrence d'une taille [Batch]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 8
    Par défaut Effacement du fichier le plus vieux jusqu'a concurrence d'une taille
    Bonjour,
    J'aurai aimé avoir un coup de paluche pour un batch qui fait ceci:

    Tant que le contenu du répertoire X est plus grand que 87GB alors
    {
    efface le fichier le plus ancien du répertoire X (date création)
    }

    Et ça fonctionnerait avec un chemin du style \\10.10.10.5\logs ?


    merci d'avance pour votre aide

  2. #2
    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,

    Pour la taille du dossier :

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    @echo off
    for /f "tokens=3 delims= " %%a in ('dir ^| find /i "Bytes"') do (
      set $NbBytes=%%a
      goto:next)
    exit/b
     
    :next
    echo Nb Bytes = : [%$NbBytes%]

    Pour le fichier le plus vieux :

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    @echo off
    for /f "delims=" %%a in ('dir /b/a-d/od') do (
      set $LeVieux="%%a"
      Goto:next)
    exit/b
     
    :next
    echo Fichier le plus vieux = %$LeVieux%


    Il te suffit de faire une boucle qui test la taille et détruit le fichier le plus vieux si la taille n'est pas >87 Gb



  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 8
    Par défaut
    Salut,
    Merci pour les scripts.
    je les épluches pour mieux les comprendre.
    J'ai testé le deuxième
    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    @echo off
    for /f "delims=" %%a in ('dir "D:\testbat\toto"') do (
      set $LeVieux="%%a"
      Goto:next)
    exit/b
     
    :next
    echo Fichier le plus vieux = %$LeVieux%
    et il me donne pour réponse : Fichier le plus vieux = "Le volume dans le lecteur D s'appelle BGGTM"
    Je regarde de mon côté pour savoir pourquoi il me donne se résultat.
    Je ne sais pas pourquoi mais j'ai le furieux pressentiment qu'il manque un trux du style :
    "Si date en mémoire est plus récente que date fichier alors mettre nom et date fichier en mémoire" au niveau du "set"?
    Si tu as une petite idée, c'est bien volontier.

  4. #4
    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
    Execute le tel qu'il est "/b/a-d/od" n'est pas un chemin de répertoire mais une suite de paramètre pour la commande DIR :

    Ou si tu veux changer : dir c:\Ton\chemin /b/a-d/od.


  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 8
    Par défaut
    Arf, heu oui, zut.
    le batch 2 fonctionne tip top maintenant, merci
    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    echo off
    set $dossiure="D:\testbat\toto\"
     
    for /f "delims=" %%a in ('dir %dossiure% /b/a-d/od') do (
    	set $LeVieux="%%a"
    	Goto:next)
    exit /b
     
    :next
    echo Fichier le plus vieux = %$LeVieux%

    et j'ai aussi fait le batch finale
    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
    26
    27
    28
    echo off
    set $dossiure="d:\testbat\toto\"
    set $taille=452892820
     
    :recommence
    echo "------------------------------------------------------------"
    for /f "tokens=3 delims= " %%a in ('dir %dossiure% ^| find /i "octets"') do (
      set $NbBytes=%%a
      Goto:fintaille)
    exit /b
     
    :fintaille 
     
    if %$NbBytes% GTR %taille% (
    	for /f "delims=" %%a in ('dir %dossiure% /b/a-d/od') do (
    		set $LeVieux="%%a"
    		Goto:finvieu)
    	exit /b
     
    	:finvieu
    	del %dossiure%\%$LeVieux% /F /Q
    	echo %$LeVieux% efface
    	Goto:recommence)
     
    	echo le dossier fait %$NbBytes%
    	Goto:finbatch
    exit /b
    :finbatch

    Par contre, le batch 1. il y avait un bug, faut remplacer le mot "Bytes" par "octets".
    Il cause la france mon PC.

    J'ai 2 pépins là :
    1) Il ne trouve que la taille du répertoire où il est malgré l'indication.
    2) la comparaison de taille n'a pas l'air de fonctionner.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 8
    Par défaut
    A vrai dire, j'ai trouvé d'autre bug sur lequel je bute un peu :

    1-Il ne détecte que la taille du répertoire d'où il est lancé malgré les indications.
    2-La variable taille ne supporte pas des taille de 80Go exprimé en octets
    3-Il aime pas faire des bons en arrière dans le code.
    4-Celui qui l'a codé (moi) est un vrai manche.

    Et là je coince un peu.

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

Discussions similaires

  1. Effacer le fichier le plus ancien
    Par vibos dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 31/01/2013, 00h36
  2. Supprimer les fichiers Excel plus vieux que 7 jours
    Par jeje00 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/07/2009, 20h05
  3. [FTP] Tester si un fichier est plus vieux de 48 heures
    Par kilian67 dans le forum Langage
    Réponses: 6
    Dernier message: 04/07/2008, 09h50
  4. Réponses: 3
    Dernier message: 18/05/2006, 17h58

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