Nov
12
2009

[VBS] Supprimer les fichiers d’un repertoire en fonction de leur date de modification


Voici un script écrit en VBS qui permet de nettoyer un répertoire. Ce script est équivalent à la commande linux :

find /rep –mtime +5 –exec rm –f {} \;

Voici le script :

‘Les declarations
‘Repertoire ou sont stockes les fichiers
DossierSauvegarde = "C:\TEST\"
‘Nombre de jours de conservation des Fichiers
AgeMaximalFichiers = "30"
‘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 systeme
DateSysteme = Date
‘On apelle la fonction d’effacement
Clean(DossierSauvegarde)
‘Fonction d’effacement des fichiers
Sub Clean(FolderPath)
Set Folder = fso.Getfolder(FolderPath)
‘On appelle recursivement la fonction s’il y a des sous dossiers
Set SubFolder = Folder.SubFolders
   For Each CurrentFolder in SubFolder
      Clean CurrentFolder.Path
   Next
‘On efface les fichiers dans le dossier courant
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
End Sub
‘On affiche un joli message
MsgBox (Cstr(NbFichiersEffaces) + " fichiers ont ete effaces" )

Il faut indiquer le dossier à nettoyer (DossierSauvegarde) et la durée de rétention (AgeMaximalFichiers).

J’ai trouvé ce script sur http://forum.hardware.fr/hfr/WindowsSoftware/Logiciels/suppression-fichiers-fonction-sujet_247096_1.htm

Au sujet de l'auteur: Olivier Legras

Auteur de ce Blog, je partage quelques unes de mes notes que je juge utile à vous comme à moi. Je suis très heureux de voir que mon blog a de plus en plus d'affluence. Merci à vous!

3 Comments + Add Comment

  • Il y a également la commande forfiles. Par exemple , pour supprimer tous les fichiers de plus de 30 jours du dossiers C:\TEST :
    forfiles /P C:\TEST /D -30 /M *.* /C “cmd /c echo @path && del /F /Q @path”

  • Et bien, je ne connaissais pas. La prochaine fois que j’ai cette manip à faire, je testerais 😉 En tout cas merci!

  • dans le programe il a une petite erreur au niveaux du codage :
    ‘On verifie qu’ils ne sont pas en lecture seule
    If File.Attributes And 1 Then File.Attributes = File.Attributes – 1
    a File.Attributes – 1 se n’est pas un – mes un = et mettre un ‘devent tout les phrases explicative INPORTENT

Laissez un commentaire