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 de fichiers avec des spécificités


Sujet :

VBScript

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Suppression de fichiers avec des spécificités
    Bonjour,

    Je dois faire le ménage sur un serveur de fichiers comprenant aujourd'hui 2 To de données.
    Je me suis lancé dans un script en VBs me permettant de supprimer tous les fichiers dont la date de dernier accès est antérieur à un an.

    Voici le script
    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
    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")
     
    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.DateLastAccessed ,Date)>365 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
            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.DateLastAccessed ,Date)>365 then
                objFile.delete
     
              end if
     
            Next
     
            GetSubFolders strFolderName
        Next
    End Sub


    Mais comme dans toutes bonne société, il y a toujours des utilisateurs souhaitant être des exceptions, et dont il ne faut surtout pas faire de ménage dans les dossiers leurs appartenant.
    J'ai donc une liste de répertoires et sous-répertoires qui ne doivent pas être pris en compte par ce script.

    Exemple :
    D:\Studio\Images\ A nettoyer
    D:\Studio\Images\EMD\ A ne pas toucher
    D:\Studio\Site_V2\ A ne pas toucher
    ...

    Quelqu'un a t'il une aide à m'apporter ?
    Merci pour vos futurs réponses.

  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 : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    T'aider à quel sujet ?

    Si c'est ne pas faire l'action dont tu parles dans ta boucle ci-dessous tu n'as qu'a tester Modifier les requetes récupérant les dossiers et sous dossier pour qu'elles excluent les répertoires à exclure.
    Un Exemple de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    strComputer = "." 
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") 
    Set colItems = objWMIService.ExecQuery( _
        "SELECT * FROM Win32_Directory Where Name <> 'NameOfDirectoryToExclude'",,48) 
    For Each objItem in colItems 
        Wscript.Echo "-----------------------------------"
        Wscript.Echo "Win32_Directory instance"
        Wscript.Echo "-----------------------------------"
        Wscript.Echo "Name: " & objItem.Name
    Next

Discussions similaires

  1. Réponses: 6
    Dernier message: 29/11/2006, 11h56
  2. Réponses: 17
    Dernier message: 13/11/2006, 11h55
  3. Réponses: 4
    Dernier message: 11/11/2006, 19h50
  4. Réponses: 1
    Dernier message: 31/10/2006, 15h06
  5. Suppression de fichiers avec csh
    Par mavina dans le forum Linux
    Réponses: 9
    Dernier message: 28/04/2006, 11h10

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