Differenze tra le versioni di "Copiare ricorsivamente una cartella"
Da Gambas-it.org - Wikipedia.
Riga 6: | Riga 6: | ||
Mostriamo un esempio pratico: | Mostriamo un esempio pratico: | ||
Private Const CARTELLA_PRINCIPALE As String = "<FONT Color=gray>''/percorso/della/cartella/principale/da/copiare/interamente''</font>" | Private Const CARTELLA_PRINCIPALE As String = "<FONT Color=gray>''/percorso/della/cartella/principale/da/copiare/interamente''</font>" | ||
+ | |||
<FONT Color=gray>' ''Percorso della cartella ove copiare tutto il contenuto della cartella principale:''</font> | <FONT Color=gray>' ''Percorso della cartella ove copiare tutto il contenuto della cartella principale:''</font> | ||
Private Const CARTELLA_CLONE As String = "/tmp/cartella_clone" | Private Const CARTELLA_CLONE As String = "/tmp/cartella_clone" | ||
Riga 23: | Riga 24: | ||
<FONT Color=gray>' ''Effettua la ricerca ricorsiva nella "Cartella principale" di ogni suo contenuto:''</font> | <FONT Color=gray>' ''Effettua la ricerca ricorsiva nella "Cartella principale" di ogni suo contenuto:''</font> | ||
− | For Each dr In RDir( | + | For Each dr In RDir(CARTELLA_PRINCIPALE, "*", gb.Directory) |
<FONT Color=gray>' ''Ogni sub-cartella trovata nella "Cartella principale" è ricreata (vuota) nella cartella clone:''</font> | <FONT Color=gray>' ''Ogni sub-cartella trovata nella "Cartella principale" è ricreata (vuota) nella cartella clone:''</font> | ||
− | Mkdir | + | Mkdir CARTELLA_CLONE &/ dr |
<FONT Color=gray>' ''Per ciascuna sub-cartella trovata nella "Cartella principale", sono identificati i percorsi dei file in essa contenuti:''</font> | <FONT Color=gray>' ''Per ciascuna sub-cartella trovata nella "Cartella principale", sono identificati i percorsi dei file in essa contenuti:''</font> | ||
− | For Each fl In Dir( | + | For Each fl In Dir(CARTELLA_PRINCIPALE &/ dr, "*", gb.File) |
<FONT Color=gray>' ''...che vengono copiati nella nuova sotto-cartella della "cartella-clone":''</font> | <FONT Color=gray>' ''...che vengono copiati nella nuova sotto-cartella della "cartella-clone":''</font> | ||
− | Copy | + | Copy CARTELLA_PRINCIPALE &/ dr &/ fl To CARTELLA_CLONE &/ dr &/ fl |
Next | Next | ||
Next | Next | ||
'''End''' | '''End''' |
Versione delle 10:45, 10 gen 2022
La copia ricorsiva di una Cartella consiste nel copiare ogni contenuto della Cartella medesima; non solo quindi i file presenti, ma anche tutte le sotto-cartelle presenti a vari sotto-livelli e tutti i file in esse contenuti.
In Gambas non esiste una funzione nativa per ottenere quanto sopra descritto.
Pertanto si dovrà creare un apposito algoritmo funzionale.
Mostriamo un esempio pratico:
Private Const CARTELLA_PRINCIPALE As String = "/percorso/della/cartella/principale/da/copiare/interamente" ' Percorso della cartella ove copiare tutto il contenuto della cartella principale: Private Const CARTELLA_CLONE As String = "/tmp/cartella_clone" Public Sub Main() Dim dr, fl As String ' Crea la nuova Cartella ("cartella-clone"), ove saranno copiate ricorsivamente le eventuali sotto-cartelle e i file della "Cartella principale": Mkdir CARTELLA_CLONE ' Copia innanzitutto nella "cartella-clone" i file contenuti nella "Cartella principale": For Each fl In Dir(CARTELLA_PRINCIPALE, "*", gb.File) COPY CARTELLA_PRINCIPALE &/ fl TO CARTELLA_CLONE &/ fl NEXT ' Effettua la ricerca ricorsiva nella "Cartella principale" di ogni suo contenuto: For Each dr In RDir(CARTELLA_PRINCIPALE, "*", gb.Directory) ' Ogni sub-cartella trovata nella "Cartella principale" è ricreata (vuota) nella cartella clone: Mkdir CARTELLA_CLONE &/ dr ' Per ciascuna sub-cartella trovata nella "Cartella principale", sono identificati i percorsi dei file in essa contenuti: For Each fl In Dir(CARTELLA_PRINCIPALE &/ dr, "*", gb.File) ' ...che vengono copiati nella nuova sotto-cartella della "cartella-clone": Copy CARTELLA_PRINCIPALE &/ dr &/ fl To CARTELLA_CLONE &/ dr &/ fl Next Next End