Effacer fichier/dossiers en fonction de leur derniere date de modification.

Soyez le premier à donner votre avis sur cette source.

Snippet vu 16 796 fois - Téléchargée 26 fois

Contenu du snippet

Ce code est ecrit en Vbscript, pour dans un dossier effacer les fichiers et dossiers en fonction de leur derniere date de modification.

je suis un debutant, en fait j'ai appris le vbs en faisant ce script (je ne suis pas developpeur mais admin reseaux)

je l'ai commenté le plus possible pour les debutants, il y a des fonctions que l'on peut reprendre : "recursive, appel de fonction, utilisation du FSO, ..."

soyez indulgent, je poste plus pour les debutants qui galére, comme j'ai galeré, que pour la posteritée (^^) un peut de fiertée personnelle quand meme.

je n'ai pas trouvé de source qui y resemble (ou alors pleins de sources qui faut assenbler ) si elle existe deja supprimer la !

Source / Exemple :


on error resume next
'declaration des variables
Dim folder
dim Subfolder
dim path
Dim FSO
Dim B
'instantation du file system object (FSO)
Set FSO = CreateObject("Scripting.FileSystemObject")

'initialisation de la variable contenant le chemin du repertoire racine
path = "D:\test_transit\Transit"

'appel de la fonction recurcive avec comme argument le chemin du repertoire
'racine
recurcive path

function recurcive(chemin) 'fonction récurcive pour traiter tout l'arboresence
                           'des dossiers

set folder = FSO.GetFolder (chemin) 'utilisation du FSO pour prendre le dossier
                                    'racine
set Subfolder = folder.SubFolders   'definition de la varibale pour les S/dossiers

for each A in Subfolder 'pour chaque dossier dans le sous dossier racine
        Set fic = A.Files 'definition de la variables toucher les fichier des dossier

        fichier fic 'appel de la fontion fixhier
        recurcive A 're-appel de la fonction recurcive pour traiter les S/dossiers
        
next
end function 'fin de la fonction

function fichier(fic) 'fonction qui traite les fichiers dans les dossiers A

For Each objFile in fic 'pour chaque fichier dans dossiers de fichier
        Set f = fso.GetFile(objfile) 'utilisation du FSO pour prendre le fichier
            If DateDiff("D", objfile.DateLastModified, now) > 10 Then 'si la derniére modification du fichier est plus ancienne que X jours
            msgbox objfile & " a suprimer" 'alors effacer le fichier avec option de forcer pour les fichier en lecture seule
            'FSO.DeleteFile f, force = yes
            end if 'fin du SI
    next
    
end function 'fin de la fonction

Set fic = folder.Files
fichier fic

       set folder = FSO.GetFolder (path)'utilisation du FSO pour prendre le dossier
       For Each B in folder.subfolders 'pour chaque dossier dans le dossier racine
                If B.size = 0 Then 'si la taille du dossier est egal a 0 (donc vide)
                 msgbox B & B.size 'effacer le dossier
                 'FSO.DeleteFolder B, force = yes
                End If 'fin du SI
		
        Next

Conclusion :


j'ai mis en commentaire les commandes pour la supresion et mis des MSGBOX a la place par securitée (ne rigoler pas on ne sait jamais !)

j'attend vos remarques, critiques, amelorations possibles

MERCI !

A voir également

Ajouter un commentaire

Commentaires

Sidclimber
Messages postés
2
Date d'inscription
vendredi 9 février 2007
Statut
Membre
Dernière intervention
9 février 2007
-
Merci darksnake69, ton script m'a fait gagner pas mal de temps.
Moi je le trouve bien, il fonctionne sans avoir à le retoucher et le moins que l'on puisse dire est qu'il est commenté !
J'ai quand même rajouté les 2 lignes suivantes à la ligne 47, car les fichiers à la racine n'étaient pas supprimés.

Set fic = folder.Files
fichier fic

A+
cs_djedjeska
Messages postés
1
Date d'inscription
mercredi 21 novembre 2007
Statut
Membre
Dernière intervention
22 novembre 2007
-
ché moi le fso.deletefile mindique un défaut de compatibilité ! Qqn pourrait m'aider?
dim fichier
set fso = CreateObject("Scripting.FileSystemObject")
const forreading 1, forwriting 2, forappending = 8
set fichier = fso.createtextfile ("chemin\fichier.txt", forwriting,true)
msgbox "coucou"
fso.deletefile fichier, force = yes
darksnake69
Messages postés
2
Date d'inscription
lundi 25 septembre 2006
Statut
Membre
Dernière intervention
7 août 2007
-
essaye plutot

Dim fso, MyFile, MyFile2
Set fso = CreateObject("Scripting.FileSystemObject")

fic = "c:\testfile.txt"

Set MyFile = fso.CreateTextFile(fic, True)
MyFile.WriteLine("Ceci est un test.")
MyFile.Close
msgbox "coucou"

Set MyFile2 = fso.GetFile(fic)
MyFile2.Delete



tiré de la doc vbscript.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.