Bonjour,

Le script ci-dessous est censé vider le contenu du répertoire C:\Windows \Temp et il fonctionne parfaitement quand je le lance manuellement (aux fichiers tenus près bien sûr).

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
50
51
52
53
54
55
 
'---------------------------------------------------------------------------------------
'                            VIDAGE DOSSIER TEMP DE WINDOWS
'---------------------------------------------------------------------------------------
 
' Déclaration et intialisation variables
'---------------------------------------
Dim MonSysFic, MonProcess, MonShell, MonEnv
Dim tmp, nf, nd, force, chemin, col, dossier, fichier
force = True
nf = 0
nd = 0
 
' Instanciation objets
'---------------------
Set MonSysFic = WScript.CreateObject("Scripting.FileSystemObject")
Set MonShell = WScript.CreateObject("WScript.Shell")
Set MonEnv = MonShell.Environment("PROCESS")
 
' Supression contenu temp windows
'--------------------------------
tmp = MonEnv("Windir") &"\Temp"
nf = nf + Sup_fichiers(tmp)
nd = nd + Sup_dossiers(tmp)
 
' Coup de balai
'--------------
Set col = Nothing
Set dossier = Nothing
Set fichier = Nothing 
Set MonSysFic = Nothing
Set MonShell = Nothing
Set MonEnv = Nothing
 
' Fonction suppression de dossiers (retourne nb de dossiers supprimés)
'---------------------------------------------------------------------
Function Sup_dossiers(chemin)
    Set col = MonSysFic.getfolder(chemin).Subfolders
    For Each dossier In col
    On Error Resume Next
        dossier.Delete (force)
        If Err.Number = 0 Then Sup_dossiers = Sup_dossiers + 1
    Next
End Function
 
' Fonction suppression de fichiers (retourne nb de fichiers supprimés)
'---------------------------------------------------------------------
Function Sup_fichiers(chemin)
	Set col = MonSysFic.getfolder(chemin).Files
    For Each fichier In col
    On Error Resume Next
        fichier.Delete (force)
        If Err.Number = 0 Then Sup_fichiers = Sup_fichiers + 1
    Next
End Function
Étant sous Wndows 7 intégral j'ai la possibilité via Gpedit de lancer ce script à l'arrêt de Windows mais tout se passe comme s'il n'était pas exécuté. Si je mets un msgbox témoin, celui-ci ne s'affiche pas. Je n'ai donc aucun moyen simple de voir ce qui se passe.

Sur le même principe j'ai écrit un autre script qui supprime les fichiers temporaires au niveau C:\Utilisateurs\nom_utiisateur et qui s'exécute à la fermeture de session. Ça fonctionne sans souci.

Les problèmes analogues évoqués sur la toile sont tous liés à l'utilisation d'un serveur de domaine. Dans mon cas c'est du GPO purement local. Y'aurait-il des restrictions dans ce cas ? J'ai écrit ce script quand j'étais sous XP et pour autant qu'il me souvienne je n'avais pas ce problème.

Merci d'avance pour vos suggestions.