Copiare ricorsivamente una cartella: differenze tra le versioni
Vai alla navigazione
Vai alla ricerca
Nessun oggetto della modifica |
Nessun oggetto della modifica |
||
| (3 versioni intermedie di uno stesso utente non sono mostrate) | |||
| Riga 5: | Riga 5: | ||
Mostriamo un esempio pratico: | Mostriamo un esempio pratico: | ||
Private Const CARTELLA_PRINCIPALE As String = "<FONT Color= | Private Const CARTELLA_PRINCIPALE As String = "<FONT Color=darkgreen>''/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" | ||
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>' ''Se invece essa è una sotto-cartella della "Cartella principale", allora è ricreata (vuota) nella "cartella-clone":''</font> | ||
<FONT Color=gray>' '' | Mkdir CARTELLA_CLONE &/ s | ||
Endif | |||
<FONT Color=gray>' '' | |||
Next | Next | ||
End | |||
Versione attuale delle 15:02, 23 giu 2024
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
' Se invece essa è una sotto-cartella della "Cartella principale", allora è ricreata (vuota) nella "cartella-clone":
Mkdir CARTELLA_CLONE &/ s
Endif
Next
End