Un script pour supprimer les fichiers temporaires (VBS)
Périodiquement, il est bon, voire nécessaire, de supprimer les fichiers temporaires qui viennent encombrer le disque dur.
Il faut notamment vider les répertoires TEMP, Temporary Internet Files et la corbeille. Il faut aussi éliminer tous les fichiers .tmp qui, en plus de la corbeille, viennent s'installer un peu partout sur le disque.
L'opération peut s'avérer longue et laborieuse si le nombre de fichiers temporaires est important, d'autant que certains, en cours d'utilisation, peuvent refuser de se supprimer.
L'utilisation d'un script qui peut être lancé à la demande ou bien automatiquement (tâche programmée périodiquement ou à chaque ouverture de Windows) peut donc s'avérer utile.
Deux solutions sont proposées ici, un script qui recherche et supprime les fichiers temporaires et un script qui paramètre puis lance l'utilitaire Windows de nettoyage de disque.
Le premier script va chercher l'adresse des répertoires de fichiers temporaires et supprime tous les fichiers qu'ils contiennent. Ensuite, il va supprimer tous les fichiers dont t'extension est .tmp
La première étape est la recherche des répertoires :
- les répertoires TEMP ou TMP ont pour adresse envProc("TEMP") ou envProc("TMP").
- la corbeille se situe à c:\recycled
- l'adresse des fichiers temporaires internet (les TIF) peut être extraite des bases de registres, par exemple
HKEY_USERS\.default\software\microsoft\windows\currentversion\explorer\shell folders\cache
ou HKEY_LOCAL_MACHINE\software\microsoft\windows\currentversion\internet settings\cache\content\cachepath
Attention, ces clés, valables pour Windows 98, ne le sont pas pour les autres systèmes d'exploitation (par exemple, on utilisera HKEY_CURRENT_USER\software\microsoft\windows\currentversion\explorer\shell folders\cache pour Windows NT4).
Pour trouver la valeur des clés correspondantes, il suffit d'utiliser l'instruction RegRead de WScript.Shell :
Set Ws = WScript.CreateObject("WScript.Shell")
msgbox Ws.RegRead("HKEY_USERS\.default\software\microsoft\windows\currentversion\explorer\shell folders\cache")
La seconde étape consiste à supprimer le contenu des répertoires.
Une solution, utiliser la commande DOS DELTREE, qui présente, par rapport à DEL, l'avantage de permettre la suppression des fichiers cachés et des fichiers système.
A l'inverse, DEL offre une meilleure compatibilité avec les différentes versions de DOS.
Par exemple, pour vider la corbeille :
Set Ws = WScript.CreateObject("WScript.Shell")
adr=fso.getfolder("c:\recycled").shortpath
Ws.Run "%comspec% /c DELTREE /Y " & adr & "\*.*",0,true
ou bien
Ws.Run "%comspec% /c DEL /F /S /Q " & adr & "*.*",0,true
La seconde ligne permet de transformer le nom du répertoire en nom DOS (ce qui est évidemment inutile pour la corbeille, mais peut l'être pour d'autres répertoires).
Dans la dernière ligne, %comspec% renvoie l'adresse de COMMAND.com qui est utilisé pour lancer la commande DELTREE /Y (le /Y permet d'éviter une demande de confirmation de la suppression) ou la commande DEL /F /S /Q (F pour suppression des fichiers en lecture seule, S pour suppression dans les sous-répertoires, Q pour éviter confirmation avant suppression).
Ensuite, on doit rechercher et supprimer tous les fichiers portant l'extension .tmp.
On peut utiliser la commance DOS DIR pour lister tous les répertoires contenant des fichiers temporaires, puis
la commande DELTREE ou la commande DEL pour y supprimer les fichiers indésirables :
Ws.Run "%comspec% /c dir c:\*.tmp /s/b > c:\rien.txt",0,true
va inscrire dans le fichier rien.txt (provisoirement créé pour l'occasion),
la liste des fichiers temporaires présents sur le disque c:\.
Il suffit alors de les supprimer en utilisant une fonction dos (del, deltree) ou vbs (delete ou deletefile).
cliquez ici pour voir le texte complet du script
cliquez ici pour télécharger le script (zippé)
cliquez ici pour ouvrir le script.
Le second script se charge de paramétrer puis de lancer l'utilitaire Windows de nettoyage de disque (cleanmgr.exe, que l'on peut lancer par Démarrer, programmes, accessoires, outils système, nettoyage du disque).
Les paramètres contrôlant le logiciel sont stockés dans certaines clés de la base de registres. On peut y stocker un "profil" d'options, auquel on affecte un numéro, dans notre exemple 6666.
Par exemple, pour inclure dans le profil la suppression des fichiers contenus dans la corbeille :
Set sh = WScript.CreateObject("WScript.Shell")
bin="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Recycle Bin\StateFlags6666"
sh.regwrite bin,2,"REG_DWORD"
(le script inscrit la valeur 2 en hexadécimal dans la clé correspondante)
Le script va ensuite chercher l'adresse (adr_clnr) de cleanmgr.exe (également dans la base de registres) puis lancer l'execution avec le profil 6666 :
sh.run adr_clnr & " /sagerun:6666",0,true
cliquez ici pour voir le texte complet du script
cliquez ici pour télécharger le script (zippé)
cliquez ici pour ouvrir le script.