Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Le soluzioni FSP per il 2026: potenza e IA al centro
Le soluzioni FSP per il 2026: potenza e IA al centro
In occasione del Tech Tour 2025 della European Hardware Association abbiamo incontrato a Taiwan FSP, azienda impegnata nella produzione di alimentatori, chassis e soluzioni di raffreddamento tanto per clienti OEM come a proprio marchio. Potenze sempre più elevate negli alimentatori per far fronte alle necessità delle elaborazioni di intelligenza artificiale.
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa
AWS è il principale operatore di servizi cloud al mondo e da tempo parla delle misure che mette in atto per garantire una maggiore sovranità alle organizzazioni europee. L'azienda ha ora lanciato AWS European Sovereign Cloud, una soluzione specificamente progettata per essere separata e distinta dal cloud "normale" e offrire maggiori tutele e garanzie di sovranità
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto
Xiaomi ha portato sul mercato internazionale la nuova serie Redmi Note, che rappresenta spesso una delle migliori scelte per chi non vuole spendere molto. Il modello 15 Pro+ punta tutto su una batteria capiente e su un ampio display luminoso, sacrificando qualcosa in termini di potenza bruta e velocità di ricarica
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 21-11-2008, 15:17   #1
nemof
Senior Member
 
L'Avatar di nemof
 
Iscritto dal: Feb 2006
Città: bergamo
Messaggi: 603
[BATCH] Eliminare file più vecchi ti "tot" mesi

ragazzi avrei bisogno di un piccolo aiutino se possibile, sto cercando un modo per eliminare in automatico tutti i file più vecchi di 3 mesi da una cartella lanciando un'applicazione di batch. sono 2 giorni che cerco su internet ho trovato qualche soluzione, ovvero una riga di comando (che sfruttava il comando forfiles) però non sapendo programmare sono andato quasi per tentativi ma ne ho ricavato solo un gran mal di testa!!! mi chiedevo se qualcuno di voi ha idea di come poter fare una cosa del genere (anche in altri modi, per carità!) io non so più dove sbattere la testa e ve ne sarei molto grato!
__________________
al mondo esistono 10 categorie di persone: quelle che conoscono il codice binario e quelle che nn lo conoscono
nemof è offline   Rispondi citando il messaggio o parte di esso
Old 22-11-2008, 23:34   #2
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da nemof Guarda i messaggi
(anche in altri modi, per carità!)
Nel senso che non è necessario sia un .bat ?
Potrebbe essere un qualsiasi codice funzionante in Windows ?
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 23-11-2008, 00:24   #3
torettp
Senior Member
 
L'Avatar di torettp
 
Iscritto dal: Feb 2006
Città: Banzi (Pz)
Messaggi: 657
non puoi semplicemente visualizzare i detttagli dei file, ordinarli per data di creazione, ed eliminare tutti quelli che ti interessano?
torettp è offline   Rispondi citando il messaggio o parte di esso
Old 24-11-2008, 08:15   #4
nemof
Senior Member
 
L'Avatar di nemof
 
Iscritto dal: Feb 2006
Città: bergamo
Messaggi: 603
si si, mi andrebbe bene qualsiasi codice funzionante in win io ho pensato ad un bat, ma sono un profano!

sul fatto di farlo manualmente visualizzando la data lo escluderei perchè la persona che deve lavorare su quella macchina lo farebbe solo il primo giorno e poi basta. (è molto disordinata ecc). e poi tenere il conto dei mesi in questo modo potrebbe portare ad errori prima o poi
__________________
al mondo esistono 10 categorie di persone: quelle che conoscono il codice binario e quelle che nn lo conoscono
nemof è offline   Rispondi citando il messaggio o parte di esso
Old 24-11-2008, 09:54   #5
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da nemof Guarda i messaggi
si si, mi andrebbe bene qualsiasi codice funzionante in win io ho pensato ad un bat, ma sono un profano!
Allora forse meglio qualcosa di più completo/personalizzabile, di uno script .Bat, non trovi ?
Se hai Office installato suggerisco qualcosa di simile a questo, che può girare come Macro, anche solo da un .doc Word con un solo pulsante. Nessun bisogno di compilare in .exe quindi :

-> Codice da mettere in un Modulo VBA :
Codice:
Public Sub EliminaFile(nomeCompFile As String)

    If Len(Dir$(nomeCompFile)) > 0 Then
        'aggiungere eventuale gestione attributi file...
        On Error Resume Next
        SetAttr nomeCompFile, vbNormal
        Kill nomeCompFile
    End If
    
End Sub

Public Sub EliminaFiles(percorso As String, filtro As String, numGiorni As Integer, Optional dataConfronto As Variant)

    'Richiede Reference alla library : Microsoft Scripting Runtime.
    'Se omesso dataConfronto, la Sub utilizza di default la data di sistema corrente (now).
    Dim FSO As New FileSystemObject
    Dim F As File
    Dim nomiFile() As String
    Dim cnt As Long
    cnt = 0
    Dim nomeFile As Variant
    Dim DDiff As Long
    Dim dataCr As Date
    Dim dataConf As Date
    If IsMissing(dataConfronto) Then
        dataConf = Now
    ElseIf Not IsDate(dataConfronto) Then
        Exit Sub
    Else
        dataConf = CDate(Format(dataConfronto, "mm/dd/yyyy"))
    End If
    nomeFile = Dir$(percorso & filtro)
    Do While nomeFile <> ""
        ReDim Preserve nomiFile(cnt)
        nomiFile(cnt) = nomeFile
        nomeFile = Dir$
        cnt = cnt + 1
    Loop
    For Each nomeFile In nomiFile
        Set F = FSO.GetFile(percorso & nomeFile)
        dataCr = F.DateCreated
        DDiff = DateDiff("d", dataCr, dataConf)
        If DDiff >= numGiorni Then
            EliminaFile percorso & nomeFile
        End If
    Next
    Set F = Nothing
    Set FSO = Nothing
   
End Sub
Permette di scegliere :
- il percorso
- il filtro, ossia il tipo file : "*.*", "*.doc" ecc...
- numero giorni trascorsi
- data iniziale di confronto

Permette inoltre di impostare via codice, nella "Sub EliminaFile" gli attributi
di quei files che potrebbero "opporsi" alla cancellazione...

-> E questo è il codice del pulsante che lo lancia :
Codice:
Private Sub CommandButton1_Click()
    
    EliminaFiles "D:\PROVA\", "*.*", 90

End Sub
Nell'esempio vengono cancellati tutti i file nella dir D:\PROVA\ più vecchi di 90 giorni (3 mesi).
Ho usato questo perchè deriva da un codice fatto da me tempo fa in cui il conto veniva fatto sui giorni. Ovviamente, se decidi di adottarlo, può essere modificato in modo da fare il conto sui mesi... Prova...
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 24-11-2008, 10:12   #6
nemof
Senior Member
 
L'Avatar di nemof
 
Iscritto dal: Feb 2006
Città: bergamo
Messaggi: 603
Quote:
Originariamente inviato da MarcoGG Guarda i messaggi
...
WOW fantastico!!!! appena ho un attimo di "tregua" sul lavoro me lo studio per bene e faccio qualche prova!!! (al limite chiedo qualcosina)
DAVVERO GRAZIE MILLE!!!!!

ps: funziona anche se il disco è un disco di rete (è un NAS) giusto?
__________________
al mondo esistono 10 categorie di persone: quelle che conoscono il codice binario e quelle che nn lo conoscono
nemof è offline   Rispondi citando il messaggio o parte di esso
Old 24-11-2008, 10:31   #7
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da nemof Guarda i messaggi
WOW fantastico!!!! appena ho un attimo di "tregua" sul lavoro me lo studio per bene e faccio qualche prova!!! (al limite chiedo qualcosina)
DAVVERO GRAZIE MILLE!!!!!

ps: funziona anche se il disco è un disco di rete (è un NAS) giusto?
Deve funzionare con qualsiasi path di windows valido passato all'argomento stringa "percorso".
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 24-11-2008, 14:27   #8
nemof
Senior Member
 
L'Avatar di nemof
 
Iscritto dal: Feb 2006
Città: bergamo
Messaggi: 603
ho provato a creare la macro ecc, quello che non capisco però è dove mettere il codice del pulsante, perchè quando creo un pulsante a cui assegno la macro vedo l'icona ma non riesco a inserire la riga di comando che mi permette di scegliere la cartella, il tipo di file ecc
__________________
al mondo esistono 10 categorie di persone: quelle che conoscono il codice binario e quelle che nn lo conoscono
nemof è offline   Rispondi citando il messaggio o parte di esso
Old 24-11-2008, 18:22   #9
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da nemof Guarda i messaggi
ho provato a creare la macro ecc, quello che non capisco però è dove mettere il codice del pulsante, perchè quando creo un pulsante a cui assegno la macro vedo l'icona ma non riesco a inserire la riga di comando che mi permette di scegliere la cartella, il tipo di file ecc
Anzitutto, e se per te è lo stesso, la macro lanciala da Excel, che quanto a supporto VBA è l'applicativo migliore di Office.
Poi, il pulsante va inserito dal menu Visualizza/Barre degli Strumenti/Strumenti di Controllo -> scegli il "Command Button", o "Pulsante di Comando".
Appena aggiunto il pulsante, Excel ( o Word ecc... ) entra in modalità progettazione. Doppio Click sul pulsante e sei nell'editor !

P.S.: non dimenticare di referenziare la libreria Microsoft Scripting Runtime !
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 24-11-2008, 21:17   #10
nemof
Senior Member
 
L'Avatar di nemof
 
Iscritto dal: Feb 2006
Città: bergamo
Messaggi: 603
Quote:
Originariamente inviato da MarcoGG Guarda i messaggi
Anzitutto, e se per te è lo stesso, la macro lanciala da Excel, che quanto a supporto VBA è l'applicativo migliore di Office.
Poi, il pulsante va inserito dal menu Visualizza/Barre degli Strumenti/Strumenti di Controllo -> scegli il "Command Button", o "Pulsante di Comando".
Appena aggiunto il pulsante, Excel ( o Word ecc... ) entra in modalità progettazione. Doppio Click sul pulsante e sei nell'editor !

P.S.: non dimenticare di referenziare la libreria Microsoft Scripting Runtime !
innanzi tutto ti ringrazio moltissimo per la pazienza e la "collaborazione" proverò mercoledi.. domani sono fuori sede, però cosa significa "referenziare la libreria microsoft scriptin runtime?... non pensavo di essere cosi niubbo .

PS: si la macro ho provato a farla in exel perchè in word non mi dava alcune funzionalità
__________________
al mondo esistono 10 categorie di persone: quelle che conoscono il codice binario e quelle che nn lo conoscono
nemof è offline   Rispondi citando il messaggio o parte di esso
Old 25-11-2008, 09:17   #11
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da nemof Guarda i messaggi
però cosa significa "referenziare la libreria microsoft scriptin runtime?... non pensavo di essere cosi niubbo .
Significa semplicemente, una volta entrati nell'editor VBA, andare al menu :
Strumenti / Riferimenti > Finestra dei rif. disponibili > selezionare Microsoft Scripting Runtime.
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 26-11-2008, 14:22   #12
nemof
Senior Member
 
L'Avatar di nemof
 
Iscritto dal: Feb 2006
Città: bergamo
Messaggi: 603
Quote:
Originariamente inviato da MarcoGG Guarda i messaggi
Significa semplicemente, una volta entrati nell'editor VBA, andare al menu :
Strumenti / Riferimenti > Finestra dei rif. disponibili > selezionare Microsoft Scripting Runtime.
wow che emozionoe ci sono riuscito!!! ho provato solo in locale per ora ma sembra funzionare!! GRAZIE MILLEE!!!!

PS: un'ultimissima cosa: avendo la necessità di lanciare in automatico l'appllicazione (tramite operazioni pianificate) come potrei fare in modo che aprendo il file la macro si esegua senza dover cliccare sul pulsante?
__________________
al mondo esistono 10 categorie di persone: quelle che conoscono il codice binario e quelle che nn lo conoscono
nemof è offline   Rispondi citando il messaggio o parte di esso
Old 26-11-2008, 15:00   #13
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da nemof Guarda i messaggi
wow che emozionoe ci sono riuscito!!! ho provato solo in locale per ora ma sembra funzionare!! GRAZIE MILLEE!!!!

PS: un'ultimissima cosa: avendo la necessità di lanciare in automatico l'appllicazione (tramite operazioni pianificate) come potrei fare in modo che aprendo il file la macro si esegua senza dover cliccare sul pulsante?
Come sarebbe sembra ?
O funziona o non funziona. Da me perfettamente. Se ci sono problemi posta pure che risolviamo.

Per lanciare la Macro in auto all'apertura, prima devi settare BASSO a Strumenti/Macro/Protezione.
Poi ti porti nell'editor Vba, in corrispondenza dell'oggetto "ThisWorkbook" :

Codice:
Private Sub Workbook_Open()

    'Codice da eseguire all'apertura.
    'Metti qui il codice del pulsante...
 
End Sub
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 26-11-2008, 16:08   #14
nemof
Senior Member
 
L'Avatar di nemof
 
Iscritto dal: Feb 2006
Città: bergamo
Messaggi: 603
Quote:
Originariamente inviato da MarcoGG Guarda i messaggi
Come sarebbe sembra ?
O funziona o non funziona. Da me perfettamente. Se ci sono problemi posta pure che risolviamo.

eheheh funziona funziona! avevo scritto "sembra" perchè in questi casi non si sa mai... ancora non ci credo... cmq si in locale funziona.
appena possibile proverò a mettere il codice per farlo partire in autormatico e metto come cartella di destinazione quella della rete (se metto le mani sulla rete adesso vengo linciato da quelli che ci stanno lavorando in produzione )

PS: ho provato a lanciarlo da "calc" di openoffice 3 ma non sono riosucito a farlo funzionare, riconosce la macro (infatti avevo abbassato la protezione) ma non esegue il comando, serve proprio la suite microsoft? va beh, cmq questi sono solo dettagli, l'importate è essere riscuito a far funzionare il tutto!!!

GRAZIE ANCORA PER IL CODICE, LA GENTILEZZA E PER TUTTO L'AIUTO!!!!!
__________________
al mondo esistono 10 categorie di persone: quelle che conoscono il codice binario e quelle che nn lo conoscono

Ultima modifica di nemof : 26-11-2008 alle 16:17.
nemof è offline   Rispondi citando il messaggio o parte di esso
Old 26-11-2008, 18:47   #15
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da nemof Guarda i messaggi
PS: ho provato a lanciarlo da "calc" di openoffice 3 ma non sono riosucito a farlo funzionare, riconosce la macro (infatti avevo abbassato la protezione) ma non esegue il comando, serve proprio la suite microsoft? va beh, cmq questi sono solo dettagli, l'importate è essere riscuito a far funzionare il tutto!!!

GRAZIE ANCORA PER IL CODICE, LA GENTILEZZA E PER TUTTO L'AIUTO!!!!!

No, con Open Office ci sono pesanti differenze nello scripting e nel modello a oggetti.
Copia/Incollare VBA non serve a nulla. Il mio consiglio è di lasciar perdere Calc e usare Ms Excel, che è ottimo !
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 27-11-2008, 15:14   #16
nemof
Senior Member
 
L'Avatar di nemof
 
Iscritto dal: Feb 2006
Città: bergamo
Messaggi: 603
no problema userò office!
però ho un dubbio: ho fatto alcune prove e vedo che non vengono cancellati ne' le sottocartelle nè (cosa che miinteresserebbe di più) i file contenuti al loro interno. ho provato ad aggirare il problema ripetendo la riga di comandi per diverse cartelle in Thisworkbook ma non c'è stato niente da fare.
se volessi fare una cosa del genere dovrei perforza creare tanti file .xls quante sono le cartella da "trattare"? non so se mi sono..capito
__________________
al mondo esistono 10 categorie di persone: quelle che conoscono il codice binario e quelle che nn lo conoscono
nemof è offline   Rispondi citando il messaggio o parte di esso
Old 27-11-2008, 19:16   #17
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
potresti scaricare forfiles se non stai usando windows server 2003 da qui che devi estrarre sotto c:\windows e quindi puoi eseguire questo nella directory che ti serve:
Codice:
forfiles /s /d -90 /c "cmd /c del /f /q @FILE"
Occhio però!
Prima provalo su una copia della directory che ti serve e controlla bene che tutto vada a buon fine prima di provarlo sulla directory reale così sei sicuro che cancelli solo i file che devi cancellare


P.S. dovrebbe cancellare i file anche da tutte le sottodirectory.
__________________

Ultima modifica di ^TiGeRShArK^ : 27-11-2008 alle 19:18.
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 28-11-2008, 12:22   #18
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da nemof Guarda i messaggi
no problema userò office!
però ho un dubbio: ho fatto alcune prove e vedo che non vengono cancellati ne' le sottocartelle nè (cosa che miinteresserebbe di più) i file contenuti al loro interno. ho provato ad aggirare il problema ripetendo la riga di comandi per diverse cartelle in Thisworkbook ma non c'è stato niente da fare.
se volessi fare una cosa del genere dovrei perforza creare tanti file .xls quante sono le cartella da "trattare"? non so se mi sono..capito
Beh, semplicemente perchè NON era quello che avevi chiesto.
Se vuoi eliminare tutti i files di tutte le subdirectory che soddisfano i criteri, metti tutto questo codice in un modulo ( ed elimina tutto il vecchio codice ) :

Codice:
Public arrayFiles() As String
Public cnt As Long

Public Sub EliminaFile(nomeCompFile As String)

    If Len(Dir$(nomeCompFile)) > 0 Then
        'aggiungere eventuale gestione attributi file...
        On Error Resume Next
        SetAttr nomeCompFile, vbNormal
        Kill nomeCompFile
    End If
    
End Sub

Public Sub EliminaFiles(percorso As String, numGiorni As Integer, Optional estensioneSenzaPunto As String, Optional dataConfronto As Variant)
    cnt = 0
    Dim ext As String
    If IsMissing(estensioneSenzaPunto) Then
        ext = "*"
    Else
        ext = estensioneSenzaPunto
    End If
    Dim DDiff As Long
    Dim dataCr As Date
    Dim dataConf As Date
    If IsMissing(dataConfronto) Then
        dataConf = Now
    ElseIf Not IsDate(dataConfronto) Then
        Exit Sub
    Else
        dataConf = CDate(Format(dataConfronto, "mm/dd/yyyy"))
    End If
    Dim FD As Folder
    Dim FSO As Object
    Dim FLS As Object
    Set FSO = New Scripting.FileSystemObject
    Set FD = FSO.GetFolder(percorso)
    Set FLS = FD.Files
    Dim F As File
    For Each F In FLS
        ReDim Preserve arrayFiles(cnt)
        arrayFiles(cnt) = FD.Path & "\" & F.Name
        cnt = cnt + 1
    Next
    sottoCartelle FSO.GetFolder(percorso)
    
    Dim ok As Boolean
    Dim it As Variant
    For Each it In arrayFiles
        ok = True
        Set F = FSO.GetFile(it)
        'Condizione 1 Data Creazione :
        dataCr = F.DateCreated
        DDiff = DateDiff("d", dataCr, dataConf)
        If DDiff < numGiorni Then
            ok = False
        End If
        'Condizione 2 Estensione :
        If ext <> "*" Then
            If FSO.GetExtensionName(F.Name) <> ext Then
                ok = False
            End If
        End If
        'Condizione N :
        '...
        If ok = True Then
            EliminaFile (it)
        End If
    Next
End Sub

Public Sub sottoCartelle(CartellaPrinc As Folder)
    Dim FD As Folder
    Dim SFD As Folder
    Dim FSO As Object
    Dim FLS As Object
    Set FSO = New Scripting.FileSystemObject
    For Each SFD In CartellaPrinc.SubFolders
        Set FD = FSO.GetFolder(SFD.Path)
        Set FLS = FD.Files
        Dim F As File
        For Each F In FLS
            ReDim Preserve arrayFiles(cnt)
            arrayFiles(cnt) = FD.Path & "\" & F.Name
            cnt = cnt + 1
        Next
        sottoCartelle SFD
    Next
End Sub
Il codice utilizzatore tipico :
Codice:
EliminaFiles "D:\PROVA\", 90, "doc"
Se vuoi anche eliminare le eventuali subdirectory rimaste vuote bisognerà fare un'altra modifica ( ma hai scritto che non è importante... ).
La parte in rosso, per sottolineare la semplicità con cui si possono inserire nuove condizioni da soddisfare...
Lascio a te decidere se l'ermeticità di uno script .Bat sia meglio o no, soprattutto in vista di ulteriori modfiche o implementazioni... Prova.
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 28-11-2008, 16:10   #19
nemof
Senior Member
 
L'Avatar di nemof
 
Iscritto dal: Feb 2006
Città: bergamo
Messaggi: 603
preferisco non addentrarmi nel bat ma rimanere in una macro va più che bene. lo so che non avevo chiesto quello però facendo girare il programma mi sono accorto che sarebbe stato meglio meglio cancellare anche i file delle sottocartelle. grazie di nuovo!!!

PS: non è fondamentale cmq mi farebbe molto comodo oltre che i file eliminare anche le sotocartelle in modo da avere tutto pulito, però non vorrei rompere troppo le balle! se non è troppo uno sbattimento potresti dirmi anche quella modifica?
però ripeto: solo se non rompo troppo le balle, mi hai gia aiutato moltissimo e non vorrei abusare della disponibilità!!!!!
__________________
al mondo esistono 10 categorie di persone: quelle che conoscono il codice binario e quelle che nn lo conoscono
nemof è offline   Rispondi citando il messaggio o parte di esso
Old 30-11-2008, 10:07   #20
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da nemof Guarda i messaggi
PS: non è fondamentale cmq mi farebbe molto comodo oltre che i file eliminare anche le sotocartelle in modo da avere tutto pulito, però non vorrei rompere troppo le balle! se non è troppo uno sbattimento potresti dirmi anche quella modifica?
però ripeto: solo se non rompo troppo le balle, mi hai gia aiutato moltissimo e non vorrei abusare della disponibilità!!!!!
Beh, ho fatto 30... Faccio 31 !
Questa versione fa proprio tutto : cancellazione files in dir e subdir ed eventuale eliminazione delle dir vuote.
Sempre da testare con cautela.
Sostituisci tutto quanto con :

Codice:
Public arrayFiles() As String
Public arrayDirs() As String
Public cnt As Long

Public Sub EliminaFile(nomeCompFile As String)
    On Error Resume Next
    'aggiungere eventuale gestione attributi file...
    SetAttr nomeCompFile, vbNormal
    Dim FSO As New Scripting.FileSystemObject
    FSO.DeleteFile nomeCompFile
    Set FSO = Nothing
End Sub
Public Sub EliminaDir(nomeCompDir As String)
    On Error Resume Next
    'aggiungere eventuale gestione attributi cartella...
    SetAttr nomeCompDir, vbNormal
    Dim FSO As New Scripting.FileSystemObject
    FSO.DeleteFolder nomeCompDir
    Set FSO = Nothing
End Sub

Public Sub EliminaFiles(percorso As String, numGiorni As Integer, Optional estensioneSenzaPunto As String, Optional dataConfronto As Variant)
    cnt = 0
    Dim ext As String
    If IsMissing(estensioneSenzaPunto) Then
        ext = "*"
    Else
        ext = estensioneSenzaPunto
    End If
    Dim DDiff As Long
    Dim dataCr As Date
    Dim dataConf As Date
    If IsMissing(dataConfronto) Then
        dataConf = Now
    ElseIf Not IsDate(dataConfronto) Then
        Exit Sub
    Else
        dataConf = CDate(Format(dataConfronto, "mm/dd/yyyy"))
    End If
    Dim FSO As New Scripting.FileSystemObject
    Dim FD As Folder
    Set FD = FSO.GetFolder(percorso)
    Dim FLS As Files
    Set FLS = FD.Files
    Dim F As File
    For Each F In FLS
        ReDim Preserve arrayFiles(cnt)
        arrayFiles(cnt) = FD.Path & "\" & F.Name
        cnt = cnt + 1
    Next
    sottoCartelleFiles FSO.GetFolder(percorso)
    
    Dim ok As Boolean
    Dim it As Variant
    For Each it In arrayFiles
        ok = True
        Set F = FSO.GetFile(it)
        'Condizione 1 Data Creazione :
        dataCr = F.DateCreated
        DDiff = DateDiff("d", dataCr, dataConf)
        If DDiff < numGiorni Then
            ok = False
        End If
        'Condizione 2 Estensione :
        If ext <> "*" Then
            If FSO.GetExtensionName(F.Name) <> ext Then
                ok = False
            End If
        End If
        'Condizione N :
        '...
        If ok = True Then
            EliminaFile (it)
        End If
    Next
    Set F = Nothing
    Set FLS = Nothing
    Set FD = Nothing
    Set FSO = Nothing
    'Controlla ed elimina cartelle vuote :
    cnt = 0
    sottoCartelleVuote percorso
    For Each it In arrayDirs
        EliminaDir (it)
    Next
End Sub

Public Sub sottoCartelleFiles(CartellaPrinc As Folder)
    Dim FSO As New Scripting.FileSystemObject
    Dim FD As Folder
    Dim SFD As Folder
    Dim FLS As Object
    For Each SFD In CartellaPrinc.SubFolders
        Set FD = FSO.GetFolder(SFD.Path)
        Set FLS = FD.Files
        Dim F As File
        For Each F In FLS
            ReDim Preserve arrayFiles(cnt)
            arrayFiles(cnt) = FD.Path & "\" & F.Name
            cnt = cnt + 1
        Next
        sottoCartelleFiles SFD
        Set FD = Nothing
        Set FLS = Nothing
    Next
    Set FSO = Nothing
End Sub

Public Sub sottoCartelleVuote(CartellaPrinc As String)
    Dim FSO As New Scripting.FileSystemObject
    Dim FD As Folder
    Dim FDS As Folders
    Dim dimFD As Long
    Set FD = FSO.GetFolder(CartellaPrinc)
    dimFD = FD.Size
    If dimFD = 0 Then
        ReDim Preserve arrayDirs(cnt)
        arrayDirs(cnt) = FD.Path
        cnt = cnt + 1
    Else
        Set FDS = FD.SubFolders
        For Each FD In FDS
            sottoCartelleVuote FD.Path
        Next
        Set FDS = Nothing
    End If
    Set FD = Nothing
    Set FSO = Nothing
End Sub
Codice utilizzatore invariato.
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Le soluzioni FSP per il 2026: potenza e IA al centro Le soluzioni FSP per il 2026: potenza e IA al ce...
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa AWS annuncia European Sovereign Cloud, il cloud ...
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto Redmi Note 15 Pro+ 5G: autonomia monstre e displ...
HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione HONOR Magic 8 Pro: ecco il primo TOP del 2026! L...
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata Insta360 Link 2 Pro e 2C Pro: le webcam 4K che t...
JMEV SC01, la supersportiva cinese da 30...
Tesla Model 3 superata per la prima volt...
AMD ha già risolto la crisi della...
La “batteria di Baghdad” funziona davver...
Pannelli solari al contrario? Non propri...
Google Gemini si espande: arrivano le es...
Mercato TV: la leadership di Samsung reg...
L'AI che lavora 100 volte più vel...
LIDAR, battaglia finale: MicroVision met...
Il 2025 è stato l'anno di BYD: +2...
L'IA enterprise entra nella fase decisiv...
Il tiktoker Khaby Lame cede la sua socie...
Apple Pencil Pro scende a 122€ su Amazon...
Ring in forte sconto su Amazon: videocit...
Blink torna a fare sul serio: Mini 2K+ c...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 19:40.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v