Differenze tra le versioni di "Copiare ricorsivamente una cartella"
Da Gambas-it.org - Wikipedia.
Riga 13: | Riga 13: | ||
'''Public''' Sub Main() | '''Public''' Sub Main() | ||
− | Dim | + | Dim s As String |
<FONT Color=gray>' ''Crea la nuova Cartella ("cartella-clone"), 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>' ''Effettua la ricerca ricorsiva nella "Cartella principale" di ogni eventuale suo contenuto:''</font> | |
− | + | For Each s In RDir(CARTELLA_PRINCIPALE, "*") | |
− | + | <FONT Color=gray>' ''Se è un file lo va a copiare nella corrispondente sotto-cartella della "cartella-clone":''</font> | |
− | + | If Not IsDir(CARTELLA_PRINCIPALE &/ s) Then | |
− | + | If Not Exist(CARTELLA_CLONE &/ s) Then Copy CARTELLA_PRINCIPALE &/ s To CARTELLA_CLONE &/ s | |
− | <FONT Color=gray>' ''Effettua la ricerca ricorsiva nella "Cartella principale" di ogni suo contenuto:''</font> | + | Else |
− | For Each | + | <FONT Color=gray>' ''Ogni sub-cartella trovata nella "Cartella principale" è ricreata (vuota) nella "cartella-clone":''</font> |
− | <FONT Color=gray>' '' | + | Mkdir CARTELLA_CLONE &/ s |
− | + | Endif | |
− | <FONT Color=gray>' '' | ||
− | |||
− | |||
− | |||
− | |||
Next | Next | ||
'''End''' | '''End''' |
Versione delle 12:52, 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 s 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 ' Effettua la ricerca ricorsiva nella "Cartella principale" di ogni eventuale suo contenuto: For Each s In RDir(CARTELLA_PRINCIPALE, "*") ' Se è un file lo va a copiare nella corrispondente sotto-cartella della "cartella-clone": If Not IsDir(CARTELLA_PRINCIPALE &/ s) Then If Not Exist(CARTELLA_CLONE &/ s) Then Copy CARTELLA_PRINCIPALE &/ s To CARTELLA_CLONE &/ s Else ' Ogni sub-cartella trovata nella "Cartella principale" è ricreata (vuota) nella "cartella-clone": Mkdir CARTELLA_CLONE &/ s Endif Next End