Page 1 sur 1
[..] Suppression de fichier Temp
Posté : jeu. 08 août 2013 07:14
par duss69
Bonjour
je me permets de sollicité votre aide pour mon scipt.
Situation : nous avons rencontrons des probleme d'espace disque sur des vieux postes XP.
la solution de faire le menage des fichiers Temp.
voici mon script
seulement je ne comprends pas pourquoi dans les répertoires, je n'arrive pas à les vider complétement.
quand je mets FileGetAttrib "D" tous les répertoires se supprime
mais que je mets FilGetAttrib "R,A,H,D,T,S" plus rien ne se supprime.
alors que lorsque je mets FileGetAttrib "R,A,H" des fichiers se supprime.
j'ai testé chaque bloqué séparement
car au finale je compile pe script pour faire un .exe qu'on execute en masse sur tout les postes avec un espace disque
inférieur à 500Mo.
Merci par avance de votre aide
► Afficher le texte
Code : Tout sélectionner
;==============================================
; Suppression des Fichiers/ Dossiers
; TEMP, $NtUninstall ...
;Creer par
; date de création :
; Version 1.0
;==============================================
#include <File.au3>
#RequireAdmin
; Suppression des fichiers $NtUninstallKB
Local $regKey
Local $DirList = _FileListToArray(@WindowsDir, "$Nt*$", 2)
If IsArray($DirList) Then
For $i = 1 To $DirList[0]
$file = @WindowsDir & "\" & $DirList[$i]
DirRemove($file, 1)
$regKey = StringRegExpReplace($DirList[$i], "\$NtUninstall*.*)\$", "$1" )
RegDelete("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" & $regKey)
FileDelete(@WindowsDir & "\" & $regKey & ".log")
Next
EndIf
; Suppression des repertoires Domwnload des mises à jour Windows
Local $DownloadList2 = _FileListToArray(@windowsDir & "\SoftwareDistribution\Download", "*.*")
If IsArray($DownloadList2) Then
For $i = 1 To $DownloadList2[0]
$file = @windowsDir & "\SoftwareDistribution\Download\" & $DownloadList2[$i]
If StringInStr(FileGetAttrib($file) , "D") Then
DirRemove($file, 1)
Else
FileDelete($file)
EndIf
Next
EndIf
; Suppression des repertoires dans Internet temporary files \Content de l'utilisateur courant
; repertoire Content
Local $ContentList = _FileListToArray (@UserProfileDir & "\Local Settings\Temporary Internet Files\Content", "*.*")
If IsArray ($ContentList) Then
For $i = 1 to $ContentList [0]
$file = @UserProfileDir & "\Local Settings\Temporary Internet Files\" & $ContentList[$i]
if StringInStr (FileGetAttrib($file), "D") Then
DirRemove ($file, 1)
Else
FileDelete($file)
EndIf
Next
EndIf
; répertoire Content IE5
Local $ContentList2 = _FileListToArray (@UserProfileDir & "\Local Settings\Temporary Internet Files\Content.IE5")
If IsArray ($ContentList2) Then
For $i = 1 to $ContentList2 [0]
$file = @UserProfileDir & "\Local Settings\Temporary Internet Files\Content.IE5\" & $ContentList2[$i]
if StringInStr (FileGetAttrib($file), "D") Then
DirRemove ($file, 1)
Else
FileDelete($file)
EndIf
Next
EndIf
; répertoire Local Setting Temp
Local $ContentList3 = _FileListToArray (@UserProfileDir & "\Local Settings\Temp")
If IsArray ($ContentList3) Then
For $i = 1 to $ContentList3 [0]
$file = @UserProfileDir & "\Local Settings\Temp\" & $ContentList3[$i]
if StringInStr (FileGetAttrib($file), "R,A,H,S,D,T") Then
DirRemove ($file, 1)
Else
FileDelete($file)
EndIf
Next
EndIf
; Suppression dans le Temp de l'utilisateur courant
local $Tempfile = _FileListToArray ("C:\Temp")
if IsArray ($tempfile) Then
for $i= 1 to $tempfile [0]
$file = "C:\Temp"
if StringInStr (FileGetAttrib ($file),"R,A,H,D,T,S")Then
DirRemove ($file,1)
Else
FileDelete ($file)
EndIf
Next
EndIf
; Suppression dans le répertoire Temp de Windows
local $Tempfile = _FileListToArray (@WindowsDir & "\temp")
if IsArray ($Tempfile) Then
for $i= 1 to $Tempfile[0]
$file = @WindowsDir & "\temp\" & $tempfile[$i]
if StringInStr (FileGetAttrib($file),"R,A,H,S,D,T" )Then
DirRemove ($file,1)
Else
FileDelete ($file)
EndIf
Next
EndIf
; Suppresion des cookies de l'utilisateur courant
local $Tempfile = _FileListToArray (@UserProfileDir & "\Cookies")
if IsArray ($tempfile) Then
for $i= 1 to $tempfile [0]
$file = @UserProfileDir & "\Cookies\" & $tempfile [$i]
if StringInStr (FileGetAttrib($file),"R,A,H,S,D,T")Then
DirRemove ($file,1)
Else
FileDelete ($file)
EndIf
Next
EndIf
;Vidage de la corbeil
FileRecycleEmpty('')
MsgBox(0,"Supp Temp", "Fin du script")
; fin du script
Re: [..] Suppression de fichier Temp
Posté : jeu. 08 août 2013 07:57
par jguinch
Tu peux essayer de remplacer
If StringInStr (FileGetAttrib($file), "R,A,H,S,D,T") Then
par
If StringRegExp( FileGetAttrib($file) , "[ADHRST]") Then
Re: [..] Suppression de fichier Temp
Posté : ven. 11 oct. 2013 15:14
par duss69
toutes mes excuses pour cette réponse tardive, merci de votre aide.
après test votre modification marche mais pas sur tous les postes.
je vais donc continué de creuser.
Re: [..] Suppression de fichier Temp
Posté : ven. 11 oct. 2013 22:35
par jguinch
Perso, j'ai déjà eu des problèmes avec DirRemove qui ne supprime que partiellement les données.
Il faut s'assurer qu'il n'y ait pas des attributs qui pourraient empêcher la suppression (fichiers systèmes par exemple)
Du coup, on peut contourner ça en effectuant la suppression avec une ligne de commande :
Code : Tout sélectionner
RunWait(@ComSpec & ' /c rd /S /Q "' & $sPath & '"', @SystemDir, @SW_HIDE)