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 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168
| ' DECLARATION DES VARIABLES
dim CmdLine, FolderName, fdocuments, nf, nd, erreurnf, erreurnd
dim WINDIR, DRIVE, TEMP
Const DeleteReadOnly = True
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Set WshShell = WScript.CreateObject("WScript.Shell" )
WINDIR = WshShell.ExpandEnvironmentStrings("%WinDir%" )
DRIVE = WshShell.ExpandEnvironmentStrings("%SystemDrive%" )
TEMP = WshShell.ExpandEnvironmentStrings("%TEMP%" )
Set fso = WScript.CreateObject("Scripting.FileSystemObject" )
' J'écris à la suite du rapport créé par le script principal qui appel ce script .vbs
Set MyFile = fso.OpenTextFile(DRIVE & "\rapport.txt", ForAppending, True)
nf = 0
erreurnf = 0
nd = 0
erreurnd = 0
On Error Resume Next
' SUPPRESSION pour C:\TEMP (si le répertoire existe)
FolderName = DRIVE & "\temp"
if fso.FolderExists(FolderName) then
DeleteFiles(FolderName)
end if
' SUPPRESSION pour C:\TMP (si le répertoire existe)
FolderName = DRIVE & "\tmp"
if fso.FolderExists(FolderName) then
DeleteFiles(FolderName)
end if
' SUPPRESSION pour %WINDIR%\TEMP
FolderName = WINDIR & "\temp"
if fso.FolderExists(FolderName) then
DeleteFiles(FolderName)
end if
' SUPPRESSION POUR %UserProfile%\AppData\Local\Temp
' C'est de la qu'est exécuté mon script principal ainsi que ce .vbs appelé
FolderName = TEMP
if fso.FolderExists(FolderName) then
DeleteFiles(FolderName)
end if
' SUPPRESSION pour C:\DOCUMENTS AND SETTINGS\%USER%\LOCAL SETTINGS\TEMP
fdocuments = DRIVE & "\documents and settings\"
if fso.FolderExists(fdocuments) then
For Each folder in fso.GetFolder(fdocuments).SubFolders
FolderName = folder & "\Local Settings\temp"
if fso.FolderExists(FolderName) then
DeleteFiles(FolderName)
end if
next
end if
MyFile.WriteLine("")
if nf = 0 Then
MyFile.WriteLine("aucun fichier n'a été supprimé")
End If
if nf = 1 Then
MyFile.WriteLine(nf & " fichier a été supprimé avec succès")
End If
if nf > 1 Then
MyFile.WriteLine(nf & " fichiers ont été supprimés avec succès")
End If
if erreurnf = 0 Then
MyFile.WriteLine("aucun échec de suppression de fichier")
End If
if erreurnf = 1 Then
MyFile.WriteLine(erreurnf & " fichier est en cours d'utilisation et n'a pas pu être supprimé")
End If
if erreurnf > 1 Then
MyFile.WriteLine(erreurnf & " fichiers sont en cours d'utilisation et n'ont pas pu être supprimés")
End If
if nd = 0 Then
MyFile.WriteLine("aucun répertoire n'a été supprimé")
End If
if nd = 1 Then
MyFile.WriteLine(nd & " répertoire a été supprimé avec succès")
End If
if nd > 1 Then
MyFile.WriteLine(nd & " répertoires ont été supprimés avec succès")
End If
if erreurnd = 0 Then
MyFile.WriteLine("aucun échec de suppression de répertoire")
End If
if erreurnd = 1 Then
MyFile.WriteLine(erreurnd & " répertoire est en cours d'utilisation et n'a pas pu être supprimé")
End If
if erreurnd > 1 Then
MyFile.WriteLine(erreurnd & " répertoires sont en cours d'utilisation et n'ont pas pu être supprimés")
End If
MyFile.Close
Set MyFile = Nothing
Set fso = Nothing
' FIN DU SCRIPT
'===========================
Function ScriptFileInFolder(sFold)
For Each oFold In fso.GetFolder(temp).SubFolders
For Each oFile In oFold.Files
If oFile.Name = WScript.ScriptName Then
ScriptFileInFolder = True
Exit For
Else
ScriptFileInFolder = False
End If
Next
Next
End Function
'=============================
Sub DeleteFiles(NameFolder)
Dim repertoire, dossiers, fichiers, ObjFichier, ObjDossier, Fich
Dim CheminFichier, CheminDossier
Set repertoire = fso.GetFolder(NameFolder)
Set fichiers = repertoire.Files
Set dossiers = repertoire.Subfolders
For Each ObjFichier In fichiers
CheminFichier = ObjFichier.Path
On Error Resume Next
Set Fich = fso.OpenTextFile(ObjFichier.Path, 1, False)
If Err.Number = 0 Then
' le fichier est ouvrable
Fich.Close
ObjFichier.Delete True
If Err.Number = 0 Then
' le fichier a bien été supprimer
MyFile.WriteLine ("[Fichier supprimé avec succès]--------- " & CheminFichier)
nf = nf + 1
Else
' il y a refus de suppression du fichier
Err.Clear
MyFile.WriteLine ("[Echec de suppression du fichier]------ " & CheminFichier)
erreurnf = erreurnf + 1
End If
Else
' le fichier n'a pas put être ouvert
Err.Clear
MyFile.WriteLine ("[Echec de suppression du fichier]------ " & CheminFichier)
erreurnf = erreurnf + 1
End If
Next
For Each ObjDossier In dossiers
CheminDossier = ObjDossier.Path
On Error Resume Next
If Not ScriptFileInFolder(ObjDossier) Then ' On cherche le script dans chaque sous-dossier :
' S'il y est on garde le sous-dossier, sinon on le supprime
ObjDossier.Delete True
If Err.Number = 0 Then
' le dossier à bien été supprimé
MyFile.WriteLine ("[Répertoire supprimé avec succès]------ " & CheminDossier)
nd = nd + 1
Else
' il y a refus de suppression du dossier
Err.Clear
MyFile.WriteLine ("[Echec de suppression du répertoire]--- " & CheminDossier)
erreurnd = erreurnd + 1
End If
End If
Next
Set ObjFichier = Nothing
Set ObjDossier = Nothing
Set dossiers = Nothing
Set fichiers = Nothing
Set repertoire = Nothing
End Sub |
Partager