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 dans les sous dossiers


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Août 2011
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2011
    Messages : 7
    Par défaut Supprimer dans les sous dossiers
    Bonjour,

    Nous avons un script vbs, qui nous sert a supprimmer des fichiers obsolètes dans un dossier. Il fonctionne tres bien mais uniquement dans le dossier spécifié et nous aurions besoin de le modifier pour que les sous dossier soit egalement analysé.
    Voici ci dessous mon script, pouvez vous me dire ce que je dois modifier ?
    Merci pour votre aide.

    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
     
    'Les declarations  
     
    'Repertoire ou sont stockes les fichiers 
    DossierSauvegarde = "D:\Scanner\" 
     
    'Nombre de jours de conservation des Fichiers 
    AgeMaximalFichiers = "8" 
     
    'Comptage des fichiers effaces 
    NbFichiersEffaces = 0 
     
    'Initialisation des objets 
    Set fso = CreateObject("Scripting.FileSystemObject" ) 
     
    'On verifie que le repertoire de sauvegarde existe 
    If (myName = Winrep = fso.FolderExists(DossierSauvegarde)) = False Then 
        Erreur = MsgBox("Le dossier de sauvegarde est introuvable !" ) 
        Wscript.Quit 
    End If 
     
    'On recupere la date système 
    DateSysteme = Date 
     
    'Suppression des fichiers trop anciens 
     
    Set Folder = fso.Getfolder(DossierSauvegarde) 
    For Each File In Folder.Files 
            If (DateDiff("d", File.DateLastModified, DateSysteme) > CInt(AgeMaximalFichiers)) Then 
                'On verifie qu'ils ne sont pas en lecture seule 
                If File.Attributes And 1 Then File.Attributes = File.Attributes - 1 
                File.Delete() 
                NbFichiersEffaces = NbFichiersEffaces + 1 
            End If 
    Next 
     
    'On affiche un joli message 
    MsgBox (Cstr(NbFichiersEffaces) + " fichiers ont ete effaces" )

  2. #2
    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
    Voici un code pouvant te servir de modèle :

    Fonction récursive de parcours d'un répertoire

  3. #3
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 420
    Par défaut
    Très bien vu bbil, rien à dire après tes propos.
    Néanmoins, d'après ce que j'ai pu comprendre des propos de labusette, je pense qu'il lui est un peu difficile d'adapter cette fonction à ses besoins.
    Je pense que son code modifié servirait son attente
    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
    'Les declarations  
    'Repertoire ou sont stockes les fichiers 
    DossierSauvegarde = "D:\Scanner\" 
    'Nombre de jours de conservation des Fichiers 
    AgeMaximalFichiers = "8" 
     
    'Comptage des fichiers effaces 
    NbFichiersEffaces = 0 
     
    'Initialisation des objets 
    Set fso = CreateObject("Scripting.FileSystemObject" ) 
     
    'On verifie que le repertoire de sauvegarde existe 
    If (myName = Winrep = fso.FolderExists(DossierSauvegarde)) = False Then 
        Erreur = MsgBox("Le dossier de sauvegarde est introuvable !" ) 
        Wscript.Quit 
    End If 
     
    'On recupere la date système 
    DateSysteme = Date 
     
    'Suppression des fichiers trop anciens 
     Set Folder = fso.Getfolder(DossierSauvegarde) 
     For Each File In Folder.Files 
            If (DateDiff("d", File.DateLastModified, DateSysteme) > CInt(AgeMaximalFichiers)) Then 
                'On verifie qu'ils ne sont pas en lecture seule 
                If File.Attributes And 1 Then File.Attributes = File.Attributes - 1 
                File.Delete() 
                NbFichiersEffaces = NbFichiersEffaces + 1 
            End If 
    Next 
     
    For Each sbFold In Folder.Subfolders
        For Each File In sbFold.Files 
            If (DateDiff("d", File.DateLastModified, DateSysteme) > CInt(AgeMaximalFichiers)) Then 
                'On verifie qu'ils ne sont pas en lecture seule 
                If File.Attributes And 1 Then File.Attributes = File.Attributes - 1 
                File.Delete() 
                NbFichiersEffaces = NbFichiersEffaces + 1 
            End If 
    	Next	
    Next 
     Dim Ret
     If NbFichiersEffaces <= 1 Then 
        Ret = Cstr(NbFichiersEffaces) & " fichier a été effacé"
     Else 
        Ret = Cstr(NbFichiersEffaces) &  " fichiers ont été effacés"
     End If
    'On affiche un joli message 
    MsgBox Ret
    Mais si je me trompais sur ses connaissances en vbs !!!
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  4. #4
    Membre du Club
    Inscrit en
    Août 2011
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2011
    Messages : 7
    Par défaut
    Merci beaucoups à tous les 2 pour vos réponses.
    Je pourrais tester demain les modifications apportés par "l_autodidacte".
    C'est plus que ce que j'esperais

  5. #5
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 844
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 844
    Par défaut

    Voici un autre code que vous pouvez aussi ajouté un système de journalisation : "LogFile" comme bonus
    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
    Dim DossierSauvegarde 'Nom du répertoire à parcourir
    Dim oFSO,oFld,oSubFolder,strFileSize,ws,NomFichierLog,temp,PathNomFichierLog,OutPut
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    Set ws = CreateObject( "Wscript.Shell" )
    Title = "Suppression des Fichiers"
    'Nombre de jours de conservation des Fichiers 
    AgeMaximalFichiers = "8" 
    'Comptage des fichiers effaces 
    NbFichiersEffaces = 0 
    NomFichierLog= "Fichiers Supprimés_"& Day(Now)&"_"& Month(Now)&"_"& year(Now) &".txt"
    temp = ws.ExpandEnvironmentStrings("%temp%")
    PathNomFichierLog = temp & "\" & NomFichierLog
    Set OutPut = oFSO.OpenTextFile(temp & "\" & NomFichierLog,2,True)
    DossierSauvegarde = "D:\Scanner\"
    'On verifie que le repertoire de sauvegarde existe 
    If (myName = Winrep = oFSO.FolderExists(DossierSauvegarde)) = False Then 
        Erreur = MsgBox("Le dossier de sauvegarde est introuvable !",16,"Test d'existence du dossier" ) 
        Wscript.Quit 
    End If 
     
    'On recupere la date système 
    DateSysteme = Date
    ParcoursRep DossierSauvegarde
    wscript.sleep 3000
    If MsgBox ("Voulez-vous consulter le fichier journal : " & qq(NomFichierLog),VbYesNo+VbQuestion ,Title ) = VbYes Then
    Explorer(PathNomFichierLog)
    else
    wscript.quit
    end if
     
    Sub ParcoursRep (stRep )
        MsgBox "On Traite le Répertoire : " & qq(stRep),64,qq(stRep)
    	If oFSO.FolderExists(stRep) Then
    	Set oFld = oFSO.GetFolder(stRep)
    	end If
    output.writeLine "Le Nom et le chemin du répertoire :" & qq(oFld.Path)  & " et il contient " & oFld.SubFolders.count & " sous-répertoires"
    output.writeline String(100,"*")
     
    For each File in oFld.Files
    If (DateDiff("d", File.DateLastModified, DateSysteme) > CInt(AgeMaximalFichiers)) Then 
    'On verifie qu'ils ne sont pas en lecture seule 
    If File.Attributes And 1 Then File.Attributes = File.Attributes - 1
    OutPut.WriteLine File.Path 
    'Msgbox File.Path,64,File.Path
    File.Delete()
    NbFichiersEffaces = NbFichiersEffaces + 1 
    End If 
    Next
    output.writeLine "Il y a "& oFld.Files.count & " Fichiers dans le dossier "& qq(oFld.Path)  
    output.writeline String(100,"*")
     
    	For each oSubFolder in oFld.subFolders
    		ParcoursRep oSubFolder.Path 'appel récursif de la procédure
    	Next
    end sub
     
    OutPut.Writeline Cstr(NbFichiersEffaces) + " fichiers ont été supprimés !"
    MsgBox (Cstr(NbFichiersEffaces) + " fichiers ont été supprimés !" ),64,Cstr(NbFichiersEffaces) + " fichiers ont été effacés"
     
    Function qq(strIn)
        qq = Chr(34) & strIn & Chr(34)
    End Function
     
    Function Explorer(File)
        Set ws=CreateObject("wscript.shell")
        ws.run "Explorer.exe "& File & "\",0,True
    end Function

  6. #6
    Membre du Club
    Inscrit en
    Août 2011
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2011
    Messages : 7
    Par défaut
    Merci beaucoups c'est parfait

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

Discussions similaires

  1. Création de dossiers dans les sous-dossiers
    Par djaih dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 26/05/2011, 13h29
  2. Liste de fichiers dans tous les sous dossiers
    Par TaleMaker dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/12/2008, 18h29
  3. recherche dans les sous dossiers
    Par y-master dans le forum VBA Outlook
    Réponses: 3
    Dernier message: 23/10/2008, 16h53
  4. Réponses: 2
    Dernier message: 26/07/2006, 10h53
  5. [MS-DOS] Supprimer tout les sous répertoires contenu dans un
    Par Furius dans le forum Scripts/Batch
    Réponses: 7
    Dernier message: 30/11/2005, 12h24

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