Controlla la velocità della tua connessione

VAI AL CONTENUTO DELLA PAGINA | VAI AL MENU PRINCIPALE

ONLUS
via Borgognona, 38 - 00187 Roma Tel 06.69.98.81 - Fax 06.67.86.815 - numero verde 800 682682 - Part. I.V.A. 00989551007

U I C - Osservatorio Siti Internet - OSI -

VAI AL MENU PRINCIPALE

Utility per file temporanei.

Esiste una utility che esegue lo svuotamento in automatico delle cartelle dei file temporanei.

Questa piccola ma funzionale utility, provvede alla cancellazione di tutti i file temporanei delle navigazioni web, i file presenti in cartella TEMP e TMP.

Molto utile anche nel caso si voglia farlo avviare in automatico ad ogni sessione di Windows. Questo script funziona sia con Windows Vista, che con la sua SP1 ed inoltre con Windows XP.

Per eseguire la pulizia dei file temporanei basta un doppio click sul file, che si andrà a creare col codice presente dopo l’articolo, e di seguito, visualizzare i file cancellati e i Kb recuperati.

Ora si andrà ad illustrare come, con Windows Vista, tramite il comando SetupComplete.cmd è possibile installare automaticamente un comando batch in avvio.

SetupComplete.cmd - è per mezzo di questo comando che Windows Vista installa un qualsiasi file batch PRIMA di caricare Windows.

Vista prima di avviarsi , cerca nella cartella C:\Windows\Setup\Scripts, l'esistenza di un file che deve avere come nome SetupComplete.cmd. Qualora venga trovato un file con questo nome ed estensione, lo stesso viene caricato ed eseguito.

In definitiva, se si vuole che Vista esegua una procedura automatica in avvio, ad esempio in file per la pulizia dei temporanei, è consigliabile creare un file di testo con gli appositi comandi e di copiarlo nella cartella C:\Windows\Setup\Scripts con il nome Setupcomplete.cmd. Ovviamente se la cartella non esiste va creata.

Di seguito le linee di codice da copiare ed incollare in un file di testo:

Option Explicit

Dim fso, ws, Title

Set fso = CreateObject("Scripting.FileSystemObject")

Set ws = WScript.CreateObject("WScript.Shell")

Title = "Temp File Cleaner"

Dim TmpDir : TmpDir = ws.Environment("Process")("Temp")

ChkTmpSafe

Dim OldTmpSize : OldTmpSize = fso.GetFolder(TmpDir).size

Dim arFiles(), cnt, dcnt, Fldr, SubFldr, File

cnt = -1

dcnt = 0

DelTmpFiles TmpDir

DelEmptyFldrs TmpDir

Dim strF, strD, RptSize, TotSave

CalcSave

If dcnt >= 1 Then ws.Popup cnt & strF & dcnt & _

strD & vbCrLf & vbCrLf & RptSize & vbCrLf & _

vbCrLf & TotSave,60,Title

Cleanup

Sub ChkTmpSafe

Dim Drv, Unsafe, WinDir, ComDir, PgmDir, SysDir, UnsafeDir

If TmpDir = "" Then

ws.Popup "Unsafe condition detected. %TEMP% " _

"Variable is not set.",60,Title,16

Cleanup

WScript.Quit

End If

If Not fso.FolderExists(TmpDir) Then

fso.CreateFolder(TmpDir)

Cleanup

WScript.Quit

End If

For Each Drv In fso.Drives

'If a drive or partition is not formatted, an error occurs

On Error Resume Next

If Drv.DriveType = 2 Or Drv.DriveType = 3 Then _

Unsafe = Unsafe & Drv.RootFolder & "|"

On Error GoTo 0

Next

Unsafe = Unsafe & fso.GetSpecialFolder(0) & "|"

Unsafe = Unsafe & fso.GetSpecialFolder(0) & "\Command|"

Unsafe = Unsafe & ws.RegRead("HKLM\Software\Microsoft" _

& "\Windows\CurrentVersion\ProgramFilesPath") & "|"

Unsafe = Unsafe & fso.GetSpecialFolder(1)

Unsafe = Split(Unsafe, "|", -1, 1)

For Each UnsafeDir In Unsafe

If UCase(UnsafeDir) = UCase(TmpDir) Or _

UCase(UnsafeDir) & "\" = UCase(TmpDir) Or _

UCase(UnsafeDir) = UCase(TmpDir) & "\" Then

ws.Popup "Unsafe condition detected. %TEMP% " _

"Variable is set to " & TmpDir,60,Title,16

Cleanup

WScript.Quit

End If

Next

End Sub

Sub DelTmpFiles(FldrSpec)

Set Fldr = fso.GetFolder(FldrSpec)

For Each File In Fldr.Files

cnt = cnt + 1

ReDim Preserve arFiles(cnt)

Set arFiles(cnt) = File

Next

For Each SubFldr in Fldr.SubFolders

DelTmpFiles SubFldr

Next

For Each File in arFiles

On Error Resume Next

File.Delete True

If Err.Number = 0 Then dcnt = dcnt + 1

Err.Clear

Next

End Sub

Sub DelEmptyFldrs(FldrSpec)

Set Fldr = fso.GetFolder(FldrSpec)

For Each SubFldr in Fldr.SubFolders

DelEmptyFldrs SubFldr

Next

On Error Resume Next

If UCase(Fldr.Path) <> UCase(TmpDir) Then

If Fldr.Files.Count = 0 Then

If Fldr.SubFolders.Count = 0 Then

Fldr.Delete

End If

End If

End If

If Err.Number = 76 Then

Err.Clear

On Error GoTo 0

DelEmptyFldrs(TmpDir)

End If

End Sub

Sub CalcSave

Dim NewTmpSize, SaveSize, s1, s2

Dim TmpClnLog, OldSave, HideLog, Log

NewTmpSize = fso.GetFolder(TmpDir).size

SaveSize = OldTmpSize - NewTmpSize

s1 = " free space reclaimed."

If SaveSize < 1024 Then

RptSize = SaveSize & " bytes" & s1

ElseIf SaveSize < 1048576 Then

RptSize = Round(SaveSize / 1024) & " KB" & s1

Else RptSize = Round(SaveSize / 1048576) & " MB" & s1

End If

Log = fso.GetSpecialFolder(0) & "\TempClean.Log"

If Not fso.FileExists(Log) Then fso.CreateTextFile(Log)

If fso.GetFile(Log).Size = 0 Then

Set TmpClnLog = fso.OpenTextFile(Log, 8, True)

TmpClnLog.WriteBlankLines(1)

End If

Set TmpClnLog = fso.OpenTextFile(Log, 1)

OldSave = TmpClnLog.ReadLine

If Not IsNumeric(OldSave) Then OldSave = 0

TotSave = OldSave + SaveSize

Set TmpClnLog = fso.OpenTextFile(Log, 2)

TmpClnLog.WriteLine TotSave

TmpClnLog.Close

s2 = " reclaimed to date."

If TotSave < 1024 Then

TotSave = TotSave & " bytes" & s2

ElseIf TotSave < 1048576 Then

TotSave = Round(TotSave / 1024) & " KB" & s2

Else TotSave = Round(TotSave / 1048576) & " MB" & s2

End If

cnt = cnt + 1

If cnt = 1 Then strF = " file found, " _

Else strF = " files found, "

If dcnt = 1 Then strD = " file deleted." _

Else strD = " files deleted."

Set TmpClnLog = Nothing

End Sub

Sub Cleanup

Set fso = Nothing

Set ws = Nothing

Set Fldr = Nothing

End Sub