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
| Dim stRepInital, suppr 'Nom du répertoire à parcourir
Dim oFSO, oFld, oSubFloder
dim message, RecupFile
Set oFSO = CreateObject("Scripting.FileSystemObject")
stRepInital = "D:\Mes Documents\"
RecupFile = "D:\RecapSupprDossierVide_" & Day(Now) & Month(Now) & Year(Now) & ".txt"
CreateAfile(RecupFile)
ParcoursRep stRepInital
Sub ParcoursRep (stRep )
If oFSO.FolderExists(stRep) Then
Set oFld = oFSO.GetFolder(stRep)
if oFld.subFolders.count > 0 then 'Teste le nombre de sous-répertoire dans stRep
For each oSubFolder in oFld.subFolders
ParcoursRep oSubFolder.Path 'appel récursif de la procédure
Next
else
if oFld.Files.count = 0 Then 'Teste le nombre de fichier dans le sous-répertoire
message = "Voulez vous supprimer ce dossier? : " & vbCr & oFld.Path
if MsgBox (message , vbYesNo) = vbYes then
WriteText RecupFile, oFld.Path
DeleteFolder(oFld.Path)
end if
end if
end if
End If
end sub
function DeleteFolder(FolderToDelete)
Dim oFSO
Set oFSO = CreateObject("Scripting.FileSystemObject")
oFSO.DeleteFolder FolderToDelete,True ' Le paramétre "Force" à true permet d'effacer les fichiers en lectures seules.
end function
Function CreateAfile(resumeFile)
Dim fso, MyFile 'fso pour File System Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set MyFile = fso.CreateTextFile(resumeFile, True)
End Function
Function WriteText(MyFile,myText)
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
Dim fso, f, ts
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFile(MyFile)
Set ts = f.OpenAsTextStream(ForAppending, TristateUseDefault)
ts.WriteLine myText
ts.Close
End Function |
Partager