View Full Version : Cancellare file x data
Ciao;
In una cartella che contiene un numero (inprecisato di file con la stessa estenzione), dovrei poter cancellare a blocchi ad esempio di 20 file in una volta, facendo però un controllo quali siano i file più vecchi (ovvero creati per prima).
Faccio un esempio:
Dentro una cartella mi trovo 20000 file. Per copiare il 20001 file non vi è sufficiente spazio per copiarlo, quindi prima di procedere alla copia vorrei cancellare 20 file o più, i quali risultano più vecchi come data di creazione. In questo modo recupero spazio sufficiente per la copia di altri file, Quando lo spazio si riesaurisce viene ripetuta la stessa cosa cancellando altri file più vecchi.
Linguaggio VB6
Spero possiate aiutarmi
Ciao, un semplice esempio con un tasto ed un listbox:
Sub MostraFiles(Percorso)
Dim fs As Object, f As Object, s As String
Dim ff As Object, fc As Object
List1.Clear
Set fs = CreateObject("Scripting.FileSystemObject")
Set fc = fs.GetFolder(Percorso)
Set ff = fc.Files
For Each f In ff
s = UCase(Percorso) & " "
s = s & "Creazione: " & f.DateCreated & " "
s = s & "Ultimo accesso: " & f.DateLastAccessed & " "
s = s & "Ultima modifica: " & f.DateLastModified
List1.AddItem s
Next
End Sub
Private Sub Command1_Click()
MostraFiles "c:\cartella"
End Sub
Crazie del consiglio. Pero' io devo poter cancellare ad esempio 20 files più vecchi non tutti i files. Oppure se la cosa possa essere più veloce potrei fare anche di scandire solo delle cartelle contenute in una cartella radice i quali anno come nome la data di creazione.
In questo caso dovrei cancellare ad esempio le 20 cartelle piu' vecchie lasciando gli altri.
In pratica il tutto mi serve che in caso di spazio su disco insufficiente io possa cancellare i files o cartelle piu' vecchi per recuperare spazio.
Ciao, forse non mi sono spiegata: nell'esempio, mostravo il risultato su un ListBox, ma puoi verificare il contenuto di f.DateCreated e decidere se eliminare il file, confrontandolo, p.es. con la data di sistema.
Oppure puoi cancellare le cartelle fornite da fs.GetFolder(Percorso)
Quello che non riesco a capire e come faccio partendo dalla data del sistema a cancellare ad esempio 20 files partendo da quello più vecchio?
Sarebbe molto utile avere nella listBox i nomi già ordinati dal più vecchio a salire. Cosi facendo sarebbe semplice in quanto basterebbe cancellare ad esempio i 20 files presenti nella ListBox partendo dal primo a salire
Sarebbe molto utile avere nella listBox i nomi già ordinati dal più vecchio a salire. Cosi facendo sarebbe semplice in quanto basterebbe cancellare ad esempio i 20 files presenti nella ListBox partendo dal primo a salire
Ciao, è facilissimo: dichiara la proprietà Sorted del Listbox = True; poi mostra la data così:
For Each f In ff
s = Format(f.DateCreated, "yyyymmdd") & " "
s = s & UCase(Percorso) & " "
s = s & "Creazione: " & f.DateCreated & " "
s = s & "Ultimo accesso: " & f.DateLastAccessed & " "
s = s & "Ultima modifica: " & f.DateLastModified
List1.AddItem s
Next
In questo modo, vedrai all'inizio le date meno recenti
OK. Ti ringrazio tanto per il tuo prezioso aiuto
Ciao
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.