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 :

Suppression récursive des fichiers datant de + 1 mois


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3
    Par défaut Suppression récursive des fichiers datant de + 1 mois
    Bonjour,

    Je débute en vbs, je cherche un moyen de coder simplement la suppression des fichiers datant de +1 mois sur toute une arborescence.
    Je cherche des exemples de code qui traite ce problème, la récursivité et la date de modification du fichier.

    Merci.

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3
    Par défaut
    J'ai trouvé un code très intéressant sur Internet, le seul problème c'est qu'il faut saisir l'arborescence dans une interface graphique.
    Je voudrais automatiser ce script et renseigner l'arborescence dans le code du genre :

    strFolderName = "c:\temp"

    Je ne trouve pas le moyen d'adapter facilement ce script à mon besoin.

    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
    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
    '*******************************************************************************
    ' Script permettant D 'effacer les fichiers Qui date de plus de 15 jours
    ' Avec interface Graphique
    '
    '*******************************************************************************
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objShell = CreateObject("Shell.Application")		
    Set objFolder = objShell.BrowseForFolder _
        (WINDOW_HANDLE, "Selectionner le dossier à traiter :", NO_OPTIONS, ".")
    Set objFolderItem = objFolder.Self
    strFolderName = objFolderItem.Path
    Set colSubfolders = objWMIService.ExecQuery _
        ("Associators of {Win32_Directory.Name='" & strFolderName & "'} " _
            & "Where AssocClass = Win32_Subdirectory " _
                & "ResultRole = PartComponent")
    'Wscript.Echo strFolderName
     
    arrFolderPath = Split(strFolderName, "\")
    strNewPath = ""
     
    For i = 1 to Ubound(arrFolderPath)
        strNewPath = strNewPath & "\\" & arrFolderPath(i)
    Next
     
    strPath = strNewPath & "\\"
    Set colFiles = objWMIService.ExecQuery _
        ("Select * from CIM_DataFile where Path = '" & strPath & "'")
     
    For Each objFile in colFiles
        Set objReadOnlyFile = objFSO.GetFile(objFile.Name)
         'Wscript.Echo objFile.Name & chr (10) &  objReadOnlyFile.DateLastModified
     if DateDiff("d",objReadOnlyFile.DateLastModified ,Date)>15 then
         objFile.delete
    end if
    Next
     
    For Each objFolder in colSubfolders
        GetSubFolders strFolderName
    Next
     
    Sub GetSubFolders(strFolderName)
        Set colSubfolders2 = objWMIService.ExecQuery _
            ("Associators of {Win32_Directory.Name='" & strFolderName & "'} " _
                & "Where AssocClass = Win32_Subdirectory " _
                    & "ResultRole = PartComponent")
        For Each objFolder2 in colSubfolders2
            strFolderName = objFolder2.Name
            'Wscript.Echo
            'Wscript.Echo objFolder2.Name
            arrFolderPath = Split(strFolderName, "\")
            strNewPath = ""
            For i = 1 to Ubound(arrFolderPath)
                strNewPath = strNewPath & "\\" & arrFolderPath(i)
            Next
            strPath = strNewPath & "\\"
            Set colFiles = objWMIService.ExecQuery _
                ("Select * from CIM_DataFile where Path = '" & strPath & "'")
            For Each objFile in colFiles
            Set objReadOnlyFile = objFSO.GetFile(objFile.Name)
            if DateDiff("d",objReadOnlyFile.DateLastModified ,Date)>15 then
                'Wscript.Echo objFile.Name & chr (10) &  objReadOnlyFile.DateLastModified
                objFile.delete
              end if
            Next
            GetSubFolders strFolderName
        Next
    End Sub

  3. #3
    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'ai parcouru le script rapidement.
    Il me semble qu'il suffit de transformer la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strFolderName = objFolderItem.Path
    en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strFolderName = "c:\temp"

  4. #4
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 2
    Par défaut Parcourir récursivement une arborescence
    La récursivité est bien plus simple à mettre en oeuvre que dans ton exemple de 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
    Const DOSSIER = "C:\Temp"
     
    Set oFso = CreateObject("Scripting.FileSystemObject")
    Parcourir oFso.GetFolder(DOSSIER)
     
    Sub Parcourir(oDossier)
    	For Each oSousDossier in oDossier.Subfolders
    		Parcourir oSousDossier
    	Next
     
    	For Each oFichier in oDossier.Files
    		' ...
    		' Traitement à appliquer à chaque fichier
    		' ...
    	Next
    End Sub
    A chaque passage de boucle, tu récupères un objet de type File que tu peux manipuler en utilisant ses méthodes et propriétés.

Discussions similaires

  1. suppression récursive des fichiers cachés
    Par enicnath dans le forum Administration système
    Réponses: 2
    Dernier message: 26/04/2012, 22h26
  2. [ksh] Liste récursive des fichiers, au format CSV
    Par Neuromancien2 dans le forum Linux
    Réponses: 2
    Dernier message: 19/02/2008, 23h41
  3. Suppression automatique des fichiers sur le serveur
    Par phpieur dans le forum ASP.NET
    Réponses: 9
    Dernier message: 17/05/2007, 13h19
  4. [Upload] Suppression auto des fichiers uploadés
    Par silver.spike dans le forum Langage
    Réponses: 5
    Dernier message: 09/03/2007, 11h27
  5. Suppression automatique des fichiers trop vieux
    Par HwRZxLc4 dans le forum Langage
    Réponses: 5
    Dernier message: 09/05/2006, 11h22

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