PDA

Visualizza la versione completa : [C++] Comando per eliminare cartelle non vuote


Giovanni Pr88
15-01-2011, 09:04
Ciao a tutti.
Mi servirebbe un comando per eliminare le cartelle.
Ho trovato il comando removedirectory ma non fa al caso mio in quanto elimina solo cartelle vuote. Le cartelle che devo eliminare io, contengono al loro interno, dei file e altre cartelle....
Grazie a tutti

Ippo343
15-01-2011, 10:50
Regolamento (http://forum.html.it/forum/showthread.php?s=&threadid=973887) :ciauz:

Quello che chiedi si trova tranquillamente con google (senza specificare che non sapendo su che OS sei, non sapremmo comunque aiutarti.

Giovanni Pr88
15-01-2011, 11:02
Io utilizzo windows.
Io ho cercato con google.
Ma, come ho scritto sopra, ho trovato l'utilizzo della funzione remove directory che però funziona solo se le cartelle sono vuote... E questo non fa al caso mio. Vorrei poter eliminare cartelle "piene"

Alex'87
15-01-2011, 11:06
Originariamente inviato da Giovanni Pr88
Io utilizzo windows.
Io ho cercato con google.
Ma, come ho scritto sopra, ho trovato l'utilizzo della funzione remove directory che però funziona solo se le cartelle sono vuote... E questo non fa al caso mio. Vorrei poter eliminare cartelle "piene" Prova a creare un metodo ricorsivo che cancella il contenuto della cartella e poi la cartella stessa. È abbastanza banale :mem:

Giovanni Pr88
15-01-2011, 11:17
Il problema è che dentro la cartella ci sono un sacco di file. File audio, altre sotto cartelle... Se ci fosse poca roba avrei fatto come dici tu! :)
Mi sembra strano che per eliminare una cartella contenente file, sottocartelle...Non ci sia un comando apposito in c++

deleted_29
15-01-2011, 11:44
Puoi ottenere il risultato (su windows) in modo piuttosto brutale con la funzione API della shell32 SHFileOperation, passandole una
SHFileOpStruct
http://msdn.microsoft.com/en-us/library/bb759795(v=vs.85).aspx
con dentro DELETE, NO_CONFIRMATION,SILENT e così via

Qui ne vedi qualcosina
http://msdn.microsoft.com/en-us/library/bb762164(v=vs.85).aspx

Non ti consiglio di usare le "nuove" funzioni (di vista e 7) in quanto il programma non funzionerebbe su XP

deleted_29
15-01-2011, 11:45
Originariamente inviato da Giovanni Pr88
Il problema è che dentro la cartella ci sono un sacco di file. File audio, altre sotto cartelle... Se ci fosse poca roba avrei fatto come dici tu! :) Non è difficilissimo, bisogna usare FindFirst e FindNext

Mi sembra strano che per eliminare una cartella contenente file, sottocartelle...Non ci sia un comando apposito in c++ bhè C++ è un linguaggio, quello che vuoi te è un comando di una libreria, sono due cose diverse

Giovanni Pr88
15-01-2011, 11:57
Originariamente inviato da franzauker
Puoi ottenere il risultato (su windows) in modo piuttosto brutale con la funzione API della shell32 SHFileOperation, passandole una
SHFileOpStruct
http://msdn.microsoft.com/en-us/library/bb759795(v=vs.85).aspx
con dentro DELETE, NO_CONFIRMATION,SILENT e così via

Qui ne vedi qualcosina
http://msdn.microsoft.com/en-us/library/bb762164(v=vs.85).aspx

Non ti consiglio di usare le "nuove" funzioni (di vista e 7) in quanto il programma non funzionerebbe su XP

Conoscevo la shfileop solo che sto cercando di realizzare un programma portabile anche su linux...Quindi cercavo un comando che funzionasse su entrambi i sistemi operativi...

deleted_29
15-01-2011, 12:10
ti suggerisco di usare la libreria POSIX standard dirent.h, per enumerare file e cartelle [opendir() etc], e rmdir()/_rmdir()

Giovanni Pr88
15-01-2011, 12:14
Perfetto.
Proverò ad usare la funzione rmdir con la libreria dirent.h Poi ti farò sapere.
Grazie mille...

Loading