Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150

    [FileSystemObject] Leggere file ultimi due mesi

    Salve a tutti,
    utilizzo questa porzione di codice, per leggere una dir, dove risiedono parecchi file (nell'ordine delle migliaia) la cui data va da oggi a circa 6 mesi fa. Quello che vorrei fare è restringere la lettura e quindi il caricamento nell'array, ai soli file che sono vecchi di 2 mesi, escludendo quindi gli altri.

    E' possibile farlo modificando questo codice?

    codice:
    ' Leggo il contenuto della directory e lo metto in un array
    Dim strPath   'Path directory di ricerca
    Dim objFSO    'Variabile FileSystemObject
    Dim objFolder 'Variable directory
    Dim objItem   'Variable per il loop nel contenuto della directory
    strPath = "docuavvi/file/"
    
    ' Creo oggetto FSO
    Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
    
    ' Creo un gestore per la directory
    Set objFolder = objFSO.GetFolder(Server.MapPath(strPath))
    
    ' Carico il contenuto del percorso in una matrice
    Dim Listing (9999, 4)
    num = 1
    For Each objItem In objFolder.Files
        Listing (num, 1) = objItem.Name
        Listing (num, 2) = objItem.Size
        Listing (num, 3) = objItem.Type
        Listing (num, 4) = objItem.Path
        num=num+1
    Next
        
    num=num-1
    
    ' Fine, distruggo gli oggetti creati
    Set objItem = Nothing
    Set objFolder = Nothing
    Set objFSO = Nothing
    
    ....

    Grazie in anticipo per la collaborazione
    ciao

  2. #2
    puoi giocare con le proprietà .DateCreated, .DateLastAccessed e .DateLastModified, ma te li devi comunque passare tutti...

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    Originariamente inviato da optime
    puoi giocare con le proprietà .DateCreated, .DateLastAccessed e .DateLastModified, ma te li devi comunque passare tutti...
    Grazie del suggerimento, ma che intendi che me li devo passare tutti?

    Ovvero, se restingo la selezione per data, comunque la matrice che conterrà queste informazioni, sarà ridotta rispetto all'attuale e quindi andandola ad "interrogare" dovrei impiegare meno tempo, vero?

  4. #4
    codice:
    ' Data vecchia di 2 mesi
    OldDate = DateAdd("m",-2,Date())
    
    ' Leggo il contenuto della directory e lo metto in un array
    Dim strPath   'Path directory di ricerca
    Dim objFSO    'Variabile FileSystemObject
    Dim objFolder 'Variable directory
    Dim objItem   'Variable per il loop nel contenuto della directory
    strPath = "docuavvi/file/"
    
    ' Creo oggetto FSO
    Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
    
    ' Creo un gestore per la directory
    Set objFolder = objFSO.GetFolder(Server.MapPath(strPath))
    
    ' Carico il contenuto del percorso in una matrice
    Dim Listing (9999, 4)
    num = 1
    For Each objItem In objFolder.Files
        FileDate = objItem.DateLastModified
        If IsDate(FileDate) Then FileDate = CDate(FileDate)
        If FileDate < OldDate Then
            Listing (num, 1) = objItem.Name
            Listing (num, 2) = objItem.Size
            Listing (num, 3) = objItem.Type
            Listing (num, 4) = objItem.Path
            num=num+1
        End If
    Next
        
    num=num-1
    
    ' Fine, distruggo gli oggetti creati
    Set objItem = Nothing
    Set objFolder = Nothing
    Set objFSO = Nothing

  5. #5
    non credo che esista un modo di 'restringere' la selezione. se trovi un trucco dimmelo, lo sto cercando anch'io

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    Originariamente inviato da Mems
    codice:
    ' Data vecchia di 2 mesi
    OldDate = DateAdd("m",-2,Date())
    
    ' Leggo il contenuto della directory e lo metto in un array
    Dim strPath   'Path directory di ricerca
    Dim objFSO    'Variabile FileSystemObject
    Dim objFolder 'Variable directory
    Dim objItem   'Variable per il loop nel contenuto della directory
    strPath = "docuavvi/file/"
    
    ' Creo oggetto FSO
    Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
    
    ' Creo un gestore per la directory
    Set objFolder = objFSO.GetFolder(Server.MapPath(strPath))
    
    ' Carico il contenuto del percorso in una matrice
    Dim Listing (9999, 4)
    num = 1
    For Each objItem In objFolder.Files
        FileDate = objItem.DateLastModified
        If IsDate(FileDate) Then FileDate = CDate(FileDate)
        If FileDate < OldDate Then
            Listing (num, 1) = objItem.Name
            Listing (num, 2) = objItem.Size
            Listing (num, 3) = objItem.Type
            Listing (num, 4) = objItem.Path
            num=num+1
        End If
    Next
        
    num=num-1
    
    ' Fine, distruggo gli oggetti creati
    Set objItem = Nothing
    Set objFolder = Nothing
    Set objFSO = Nothing
    Grazie!
    Provo subito e vi faccio sapere se ho risolto!

    Nota: Devo ridurre i tempi di ricerca da 30 a 3 secondi (circa)

    edit:
    Funziona! Solo che la condizione è al contrario...
    If FileDate > OldDate Then

    I tempi ancora non sono riuscito a verificarli, però. Vi farò sapere.

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150

    i tempi

    Migliorati notevolmente!

    Allora, se a qualcuno interessa
    1) allo stato attuale la ricerca impiega 30 sec
    2) ultimi 2 mesi impiega 20 sec
    3) ultimo mese impiega 10 sec

    Appena avrò anche a disposizione il numero esatto di file presenti nella dir, vi farò sapere.

    Comunque questo metodo migliora e di parecchio la situazione.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.