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

VBScript Discussion :

supprimer les 6 plus ancien fichier


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 745
    Par défaut supprimer les 6 plus ancien fichier
    bonjout

    dans un dossier on réalise une sauvegarde du disque.

    Je souhaite dans ce dossier garde les 6 derniere sauvegarde et efface la sauvegarde la plus ancienne (dans la 7eme la plus vielle)

    pour un autre script j'ai utilise un script qui est le suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim Fso
    Dim Directory 
    Dim Modified
    Dim Files 
    Set Fso = CreateObject("Scripting.FileSystemObject" )
    Set Directory = Fso.GetFolder("D:\Sauve base journaliere" )
    Set Files = Directory.Files 
     
    For Each Modified in Files
    If DateDiff("D", Modified.DateLastModified, Now) > 18 Then Modified.Delete
    Next
    je pense le modifier comme sa :
    mais je ne sais comment lui dire efface le plus ancien
    qui peux m'aide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim Fso
    Dim Directory 
    Dim Modified
    Dim Files 
    Set Fso = CreateObject("Scripting.FileSystemObject" )
    Set Directory = Fso.GetFolder("D:\Sauve base journaliere" )
    Set Files = Directory.Files 
     
    For Each Modified in Files
    If (garde les 6 dernier sauvegarde et efface la plus vielle donc la 7eme) > 6 Then Modified.Delete
    Next

  2. #2
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Plutot que de faire une datediff dans ton foreach, remplis un tableau à deux dimension qui contient le nom du fichier et la date de modification.
    Remplis ce tableau de façon trier.

    Si tu ne sais pas trop comment remplir de façon trier je t'explique rapidement.
    Pour chaque fichier de ta boucle, tu parcours ton tableau et tu testes si ton fichier est plus vieux que les éléments de ton tableau. Comme ces éléments sont déjà trié, lorsque tu trouves que le fichier que tu veux insérer est plus récent que un des fichiers du tableau, tu l'insère avant cet éléments du tableau.
    BOn ce n'est aps le meilleu tri possible, mais tu peux trouver des exemples d'autre tri sur le net.

    Une fois ton tableau trier et remplis, tu peux le parcourir et supprimer tous les fichiers qui sont après la 6eme casse du tableau.

    Une dernière chose, les liste et les collections peuvent être plus adapté au tri, moins chaint en tout cas. Je pense qu'ils ont des fonction d'insertion à un index précis mais je ne suis plus sur.

  3. #3
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    alors c'est :
    Citation Envoyé par popofpopof
    supprimer les 6 plus ancien fichier

    Citation Envoyé par popofpopof Voir le message
    bonjout
    ...
    Je souhaite dans ce dossier garde les 6 derniere sauvegarde et efface la sauvegarde la plus ancienne (dans la 7eme la plus vielle)
    ...
    ben dans le deuxième cas cela n'as pas l'air bien compliqué... tu parcours les 7 fichiers ..(grâce à ta boucle ..) et tu mémorise le plus ancien... que tu peu ensuite effacer...

  4. #4
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Ha il n'y aurait que 7 fichier ?
    C'est vrai qu'un défaut dans l'expression du sujet ne permet pas de comprendre clairement le problème.
    S'il n'y a que 7 fichiers, que tu souhaites en supprimer 6, ou 1, le mieux est de rechercher ce fichier particulier et de le supprimer ou de supprimer les autres.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 745
    Par défaut
    il y a 7 fichier et je veux supprimer le plus ancien des 7 fichier puis je copirai le nouveau. Donc il y a toujours 7 fichier dans le dossier

    Citation Envoyé par bbil
    ben dans le deuxième cas cela n'as pas l'air bien compliqué... tu parcours les 7 fichiers ..(grâce à ta boucle ..) et tu mémorise le plus ancien... que tu peu ensuite effacer...
    je ne sais comment faire sa ? avec quel fonction?? peux tu m'explique stp

    merci

  6. #6
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    As tu compris le code que tu nous a posté ?

  7. #7
    Membre chevronné
    Inscrit en
    Août 2007
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Août 2007
    Messages : 302
    Par défaut
    Salut,

    tu retrouveras ce même type de demande ici (sauf que c'est 15 jours !!)

    http://www.developpez.net/forums/arc.../t-209141.html

    et en plus c'est déjà CED600 qui réponds (incontournable )

    A++

  8. #8
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par bbil Voir le message
    .. tu parcours les 7 fichiers ..(grâce à ta boucle ..) et tu
    mémorise le plus ancien... que tu peu ensuite effacer...
    bon je reviens la dessus en espérant ne pas trop t'embrouiller... (essai de comprendre le code )

    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
     
    Dim Fso
    Dim Directory 
    Dim Modified
    Dim Files 
    Set Fso = CreateObject("Scripting.FileSystemObject" )
    Set Directory = Fso.GetFolder(".\tmp" )
    Set Files = Directory.Files 
    Dim fichierLePlusVieux ' Variable utilisée pour mémoriser le fichier le plus vieux .. (celui dont la date de la derniére modification est la plus petite)
     
    if files.count >= 7 Then 'il faut qu'il y ait au moins 7 fichiers pour pouvoir effacer le 7°
    	For Each f in files 
    		'Si aucun fichier mémorisé mémorise le fichier courant..
    		if  IsEmpty(fichierLePlusVieux) then set fichierLePlusVieux = f
    		'si date du fichier parcouru dans boucle inférieure au fichier mémorisé, mémorise ce fichier
    		if f.DateLastModified < fichierLePlusVieux.DateLastModified Then set fichierLePlusVieux = f
    	next
    	msgbox "Le fichier à effacer " & fichierLePlusVieux.Name & " En utilisant la Cde : fichierLePlusVieux.Delete "
    end if



  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 745
    Par défaut
    Merci bcp BBIL sa marche super bien comme je voulai et j'ai même réusi a l'adapte a mon script

    donc sujet résolu et que cela permete a d'autre de trouve des solutions...

  10. #10
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    j'aurai voulu savoir a quoi correspond les valeurs suivante dans ton script : 18, 6, 37, 36
    Bah comme RadPAT fait un peu de bidouille il découpe des chaines de caractères, donc ces chiffres corrspondent à des position de caractères
    Donc faudrait pas y toucher
    Mais le script de bbil est mieux, ce n'est pas de la bidouille

    Attention ce qui suit n'est PAS méchant, c'est juste un CONSEIL :
    Je te conseil d'apprendre les bases du développement grâce à des cours que tu peut trouver sur le net, en effet j'ai l'impression qu'il te manque une logique de développeur, peut être commence tu seulement
    Ou alors ce n'est pas ton métier et tu avais juste besoin d'un script, cela arrive aussi des fois

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

Discussions similaires

  1. Comment trouver les 10 plus gros fichiers d'un repertoire
    Par hornetbzz dans le forum Contribuez
    Réponses: 0
    Dernier message: 28/02/2011, 23h52
  2. Supprimer les lignes d'un fichier
    Par Wisefool dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 28/02/2011, 09h18
  3. supprimer les donnés dans un fichier en vb
    Par rokirakat dans le forum VB.NET
    Réponses: 3
    Dernier message: 17/02/2008, 21h26
  4. Supprimer les lignes d'un fichier texte
    Par radhwene dans le forum Langage
    Réponses: 1
    Dernier message: 20/06/2007, 11h01
  5. Supprimer les guillemets dans un fichier après écriture
    Par soulryo dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 01/03/2005, 11h39

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