Newsgroup: it.comp.os.win.xp
Titolo: tmpwatch per windows?

Linux dispone di una simpatica utility chiamata tmpwatch che permette di 
cancellare da una serie di directory indicate tutti i file più vecchi
(non acceduti da più / modificati da più) di un certo numero di ore.
Esiste qualcosa del genere per windows?
Qualcosa di semplice: un task da automatizzare al boot che da certe 
cartelle elimina i file più "vecchi" di X ore.
Mi spiego meglio. Con linux scriverei in un crontab qualcosa del tipo:
tmpwatch 1440 /home/*/Documenti
con l'effetto di cancellare dalle sottodirectory Documenti delle home 
degli utenti locali tutti i file cui non si sia acceduto da più di 60 
giorni (=1440 ore).

 (non acceduti da più / modificati da più) di un certo numero di ore.
' test su data ed ora >> google per dettagli
msgbox date()
msgbox now()
'la path deve esistere altrimenti da errore anche nei test
path = "c:\windows\temp\Test"
'Cancella file piu' vecchi di  3 giorni
killdate = date() - 3
arFiles = Array()
set fso = createobject("scripting.filesystemobject")
SelectFiles path, killdate, arFiles, true
nDeleted = 0
for n = 0 to ubound(arFiles)
    on error resume next 'in case of 'in use' files...
  arFiles(n).delete true
  if err.number <> 0 then
    wscript.echo "Unable to delete: " & arFiles(n).path
  else
    nDeleted = nDeleted + 1
  end if
  on error goto 0
next
msgbox nDeleted & " of " & ubound(arFiles)+1 _
  & " eligible files were deleted"
sub SelectFiles(sPath,vKillDate,arFilesToKill,bIncludeSubFolders)
  on error resume next
    set folder = fso.getfolder(sPath)
  set files = folder.files
  for each file in files
        dtlastmodified = null
    on error resume Next
    dtlastmodified = file.datelastmodified
    on error goto 0
    if not isnull(dtlastmodified) Then
      if dtlastmodified < vKillDate then
        count = ubound(arFilesToKill) + 1
        redim preserve arFilesToKill(count)
        set arFilesToKill(count) = file
      end if
    end if
  next
  if bIncludeSubFolders then
    for each fldr in folder.subfolders
      SelectFiles fldr.path,vKillDate,arFilesToKill,true
    next
  end if
end sub
'Copia incolla su notepad e salva con estensione .vbs
'tutti i file (*.*)  poi ci clicchi sopra. (per esempio Test.vbs)
'se ti da' errore disattiva l'antivirus
Edit :
ecco una cosa appena vista su un NG  sempre *.vbs
OCCIO che e' su Folder e NON su File :
Anzi COMMENTO la linea del delete e ci metto un paio di
msgbox  perche se usato senza modifiche potrebbe creare guai
say i have a folder named "ROOT".
i need to iterate through all folders within the ROOT folder (if any exist)
and delete them if they are older than 24 hours (i guess if they were
created more than 24 hours ago)....
anyone have an idea?
'this works:
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objRootFolder = objFSO.GetFolder(".")
msgbox objRootFolder
RightNow = Now()
msgbox "ora attuale   "& Hour(Now)
For Each objChildFolder In objRootFolder.SubFolders
 WhenCreated = objChildFolder.DateCreated
 msgbox WhenCreated
 If DateDiff("h", WhenCreated, RightNow) >= 5 Then
 msgbox DateDiff("h", WhenCreated, RightNow) >= 5
 ''''''''''''''''objFSO.DeleteFolder(objChildFolder)
msgbox objChildFolder
 End If
Next
--
Fosco