Come da oggetto...mi serve, data una cartella, avere l'elenco di tutti i file più vecchi di 30 minuti cercando anche in tutte le sottocartelle.

per farlo io uso questo script

codice:
StrDate2 = DateAdd("n", -30, Date)
PERC = "E:\MIACARTELLA"
Testo = ""
Tot = 0

StrDateOK2 = Year(StrDate2)

If Len(Month(StrDate2)) < 2 Then StrDateOK2 = StrDateOK2 & "0" & Month(StrDate2) Else StrDateOK2 = StrDateOK2 & Month(StrDate2)
If Len(Day(StrDate2)) < 2 Then StrDateOK2 = StrDateOK2 & "0" & Day(StrDate2) Else StrDateOK2 = StrDateOK2 & Day(StrDate2)
If Len(Hour(StrDate2)) < 2 Then StrDateOK2 = StrDateOK2 & "0" & Hour(StrDate2) Else StrDateOK2 = StrDateOK2 & Hour(StrDate2)
If Len(Minute(StrDate2)) < 2 Then StrDateOK2 = StrDateOK2 & "0" & Minute(StrDate2) Else StrDateOK2 = StrDateOK2 & Minute(StrDate2)
If Len(Second(StrDate2)) < 2 Then StrDateOK2 = StrDateOK2 & "0" & Second(StrDate2) Else StrDateOK2 = StrDateOK2 & Second(StrDate2)
StrDateOK2 = StrDateOK2 & ".000000+060"



strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
 
strFolderName = PERC
 
Set colSubfolders = objWMIService.ExecQuery _
    ("Associators of {Win32_Directory.Name='" & strFolderName & "'} " _
        & "Where AssocClass = Win32_Subdirectory " _
            & "ResultRole = PartComponent")
 
arrFolderPath = Split(strFolderName, "\")
strNewPath = ""
For i = 1 to Ubound(arrFolderPath)
    strNewPath = strNewPath & "\\" & arrFolderPath(i)
Next
strPath = strNewPath & "\\"
 
Set colFiles = objWMIService.ExecQuery _
    ("Select * from CIM_DataFile where Path = '" & strPath & "'")
 
For Each objFile in colFiles
    Tot = Tot + 1
    Testo = Testo & objFile.Name & " 
 "
Next
 
For Each objFolder in colSubfolders
    GetSubFolders strFolderName
Next

Sub GetSubFolders(strFolderName)
    Set colSubfolders2 = objWMIService.ExecQuery _
        ("Associators of {Win32_Directory.Name='" & strFolderName & "'} " _
            & "Where AssocClass = Win32_Subdirectory " _
                & "ResultRole = PartComponent")
 
    For Each objFolder2 in colSubfolders2
        strFolderName = objFolder2.Name
'        Wscript.Echo "Nome Sottocartella:" & objFolder2.Name
        arrFolderPath = Split(strFolderName, "\")
        strNewPath = ""
        For i = 1 to Ubound(arrFolderPath)
            strNewPath = strNewPath & "\\" & arrFolderPath(i)
        Next
        strPath = strNewPath & "\\"
 
        Set colFiles = objWMIService.ExecQuery _
            ("Select * from CIM_DataFile where Drive = 'E:' AND Path = '" & strPath & "' AND FileSize > '0' AND CreationDate < '"& StrDateOK2 &"'")
 
        For Each objFile in colFiles
            'Wscript.Echo "NomeFile 2 "& objFile.Name 
            Tot = Tot + 1
            Testo = Testo & objFile.Name & " 
 "
        Next
 
        GetSubFolders strFolderName
    Next
End Sub


if Tot > 0 then
         WScript.StdOut.Write "scriptRes:Bad:"& Tot
         Set objMail = CreateObject("CDO.Message")
         objMail.From = "mittente@azienda.it"
         objMail.To = "dest@azienda.it
         objMail.Subject = "File Fermi su MIACARTELLA"
         objMail.HtmlBody = Testo
         objMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
         objMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "217.169.111.37"
         objMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
         objMail.Configuration.Fields.Update
         objMail.Send 
else 
         WScript.StdOut.Write "scriptRes:Ok:"& Tot
end if


e per funzionare funziona.....ma ci mette davvero tanto (si trova a scorrere un FS di circa 500 Gb con migliaia di file tutti di passaggio).

esiste un metodo più veloce secondo voi??

bye