PDA

Visualizza la versione completa : Lettura e modifica di file all'interno di una directory con C


pheonix
23-06-2016, 10:59
Buongiorno a tutti.
Ho un problema con un programma in C.
Vorrei cercare all'interno di una directory dei file (.csv)...e fin qui sono riuscito a farlo con questo codice



WIN32_FIND_DATA fc;
HANDLE h = FindFirstFile(_T("Percorso file...*.csv"),&fc);
while (FindNextFile(h, &fc) != 0){}



il punto .....io vorrei dargli un numero da input e con quel numero..per esempio se prendessimo "30" vorrei mantenere i file con data massima vecchi di 30 giorni(rispetto alla data attuale fornita dal pc)e il resto cancellarli.
Come potrei fare...io avevo provato a usare fstat()....ma non sono riuscito.P.s.tutto il codice dentro un void.

Grazie in anticipo.

Scusate per le linee...non sapevo come dividere i paragrafi

oregon
23-06-2016, 11:45
Non ho capito cosa vuoi fare, almeno non si capisce da come l'hai scritto.

Spiegati meglio.

P.S. Se ho capito bene, nella struttura WIN32_FIND_DATA documentata in

https://msdn.microsoft.com/it-it/library/windows/desktop/aa365740(v=vs.85).aspx

esistono dei campi di tipo FILETIME che puoi usare per fare i calcoli che ti servono.



P.S. Quelle linee non sono necessarie ... anzi...

pheonix
23-06-2016, 11:57
Pi precisamente io vorrei inserire un numero da input(un argomento di argv) e con quel numero...che poniamo il caso sia 15 vorrei mantenere solo i file che sono stati creati massimo 15 giorni f(es. oggi il 23/06/2016 voglio tenere i file che stanno tra intervallo di tempo di oggi e il 08/06/2016) e il resto dei file cancellarlo

oregon
23-06-2016, 12:17
Pi precisamente io vorrei inserire un numero da input(un argomento di argv) e con quel numero...che poniamo il caso sia 15 vorrei mantenere solo i file che sono stati creati massimo 15 giorni f(es. oggi il 23/06/2016 voglio tenere i file che stanno tra intervallo di tempo di oggi e il 08/06/2016) e il resto dei file cancellarlo

Ok ... allora va bene il suggerimento di prima.

pheonix
23-06-2016, 12:19
Ok ora provo a guardare

pheonix
27-06-2016, 10:53
Scusate non sono riuscito ad eseguirlo con il metodo precedente....questo potrebbe funzionare perch mi da un errore.........

system("find C:\prova* -mtime +7 -type f -delete")

E' solo una prova.

Loading