Copiare ricorsivamente una cartella: differenze tra le versioni
Vai alla navigazione
Vai alla ricerca
Nessun oggetto della modifica |
Nessun oggetto della modifica |
||
| Riga 14: | Riga 14: | ||
Dim dr, fl As String | Dim dr, fl As String | ||
<FONT Color=gray>' ''Crea la nuova Cartella, ove saranno copiate ricorsivamente le eventuali sotto-cartelle e i file della "Cartella principale":''</font> | <FONT Color=gray>' ''Crea la nuova Cartella ("cartella-clone"), ove saranno copiate ricorsivamente le eventuali sotto-cartelle e i file della "Cartella principale":''</font> | ||
Mkdir CARTELLA_CLONE | Mkdir CARTELLA_CLONE | ||
<FONT Color=gray>' ''Copia innanzitutto nella cartella clone i file contenuti nella "Cartella principale":''</font> | <FONT Color=gray>' ''Copia innanzitutto nella "cartella-clone" i file contenuti nella "Cartella principale":''</font> | ||
For Each fl In Dir(CARTELLA_PRINCIPALE, "*", gb.File) | For Each fl In Dir(CARTELLA_PRINCIPALE, "*", gb.File) | ||
COPY CARTELLA_PRINCIPALE &/ fl TO CARTELLA_CLONE &/ fl | COPY CARTELLA_PRINCIPALE &/ fl TO CARTELLA_CLONE &/ fl | ||
NEXT | NEXT | ||
<FONT Color=gray>' '' | <FONT Color=gray>' ''Effettua la ricerca ricorsiva nella "Cartella principale" di ogni suo contenuto:''</font> | ||
For Each dr In RDir(DOSSIER_PRINCIPAL, Null, gb.Directory) | For Each dr In RDir(DOSSIER_PRINCIPAL, Null, gb.Directory) | ||
<FONT Color=gray>' ''Ogni sub-cartella trovata nella " | <FONT Color=gray>' ''Ogni sub-cartella trovata nella "Cartella principale" è ricreata (vuota) nella cartella clone:''</font> | ||
Mkdir DOSSIER_CLONE &/ dr | Mkdir DOSSIER_CLONE &/ dr | ||
<FONT Color=gray>' ''Per ciascuna sub-cartella trovata nella " | <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(DOSSIER_PRINCIPAL &/ dr, "*", gb.File) | For Each fl In Dir(DOSSIER_PRINCIPAL &/ 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 DOSSIER_PRINCIPAL &/ dr &/ fl To DOSSIER_CLONE &/ dr &/ fl | Copy DOSSIER_PRINCIPAL &/ dr &/ fl To DOSSIER_CLONE &/ dr &/ fl | ||
Next | Next | ||
Versione delle 11:39, 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(DOSSIER_PRINCIPAL, Null, gb.Directory)
' Ogni sub-cartella trovata nella "Cartella principale" è ricreata (vuota) nella cartella clone:
Mkdir DOSSIER_CLONE &/ dr
' Per ciascuna sub-cartella trovata nella "Cartella principale", sono identificati i percorsi dei file in essa contenuti:
For Each fl In Dir(DOSSIER_PRINCIPAL &/ dr, "*", gb.File)
' ...che vengono copiati nella nuova sotto-cartella della "cartella-clone":
Copy DOSSIER_PRINCIPAL &/ dr &/ fl To DOSSIER_CLONE &/ dr &/ fl
Next
Next
End