Bonjour,

je suis novice en vbscript et j'ai très peu de temps pour améliorer mon script.

Mon besoin: Avoir un script qui efface tous les fichiers qui sont plus vieux que 15 jours et effacer leur dossier si ces derniers sont vides. Il y a une condition à respecter, certains dossiers ne doivent pas être supprimés. (Ceux de la racine).

Les dossiers à ne pas supprimés:
Achat
Vente
R&D

Mon problème:
Avec mon script, les fichiers s'effacent et les dossiers vide également sauf si ces dossiers se trouvent dans un répertoire à ne pas supprimer.

Mon script actuel:

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
on error resume next
 
'Déclaration de variables
Dim folder
dim Subfolder
dim path
Dim FSO
Dim B
 
'Création de l'objet
Set FSO = CreateObject("Scripting.FileSystemObject")
 
'Chemin du Temp
path = "\\chczabf0001\Data\Commun\Temp\Achats"
 
'Appel de la fonction recurcive avec comme argument le chemin du repertoire racine
recurcive path
 
'Fonction récurcive pour traiter tout l'arboresence des dossiers
function recurcive(chemin) 
	set folder = FSO.GetFolder (chemin) 'Utilisation du FSO pour prendre le dossier racine
	set Subfolder = folder.SubFolders 'Définition 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 fichier
		recurcive A 're-appel de la fonction recurcive pour traiter les S/dossiers
	next
end function
 
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) > 15 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
			FSO.DeleteFile f
		'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
2ème requête:
Est-il possible de supprimer un dossier qui ne se trouve pas à la racine mais qui porte le même nom qu'un dossier que l'on ne veut pas supprimer?

Merci de votre aide