Borrar Recursivamente


Ir a la página 1, 2  Siguiente

Objetivo: Borrar Recursivamente
Como puedo hacer un código que elimine un directorio que está lleno. He estado pensando y buscando en Google, pero para evitar macanas prefiero consultarlo a los que saben. Gracias por su ayuda.

Perfil MP  
Objetivo: Re: Borrar Recursivamente
drjuano:
Este código te puede valer...
Public Sub vaciarDirectorio(ruta As String, Optional patron As String) ''Borrar contenido de un directorio dado un patron de borrado
'borrado si existe la ruta

Dim file As String

If patron = "" Then patron = "*"
If Exist(ruta) Then
For Each File In Dir(ruta & "/", patron)
Try Kill ruta & "/" & file
Next
Endif

End

Objetivo: Re: Borrar Recursivamente
Eso es lo mismo que había pensado, pero hay que hacer la función recursiva porque bajo el directorio a borrar puede haber más directorios y subdirectorios. Hay que usar las instrucciones RDir para listar contenido de directorios y RMDir para borrar directorios vacíos.

La opción cutre es hacer un shell con rm -rf pero mucho cuidadín con eso...

Saludos

Perfil MP  
Objetivo: Re: Borrar Recursivamente
Esta función te copia un directorio a otro lugar de forma recursiva. No es lo que pides, pero con la misma lógica no te puede costar mucho el adaptarlo al borrado:

Public Sub copia_dir(path_origen As String, path_destino As String, Optional tipo As String)

Dim arDir As String[]
Dim arFile As String[]
Dim nombredir, nombrefile As String
Dim nombresolo As String
Dim n As Integer

If Not tipo Then tipo = "*"

If Not Exist(path_destino) Then
Mkdir path_destino
Endif
arfile = Dir(path_origen, tipo, gb.file) 'extraemos los ficheros
For Each nombrefile In arfile 'los copiamos
Try Copy path_origen &/ nombrefile To path_destino &/ nombrefile
Next

n = InStr(path_origen, "/")
If n > 0 Then
nombresolo = Right(path_origen, - n + 1)
Else
nombresolo = path_origen
Endif
ardir = Dir(path_origen, "*", gb.Directory)
For Each nombredir In arDir 'extraemos los subdirectorios
copia_dir(path_origen &/ nombredir, path_destino &/ nombredir) 'usamos la recursividad
Next

End

Perfil MP  
Objetivo: Re: Borrar Recursivamente
Puedes usar este modulo que es parte de un proyecto mio. Tiene detección de errores y es realmente fácil de usar, Cleaner.Clean(path).

Espero que te sirva!

Perfil MP  
Objetivo: Re: Borrar Recursivamente
Guapo ese "Mundus", Sebikul.

Perfil MP  
Objetivo: Re: Borrar Recursivamente
shordi escribió: [Ver mensaje]
Guapo ese "Mundus", Sebikul.


Gracias! Creció mucho mas de lo que esperaba, aunque ahora no esta muy activo. No he conseguido gente que se involucre, y la verdad es que estar viendo aplicación por aplicación donde se guardan los archivos no es fácil. Gracias a este proyecto aprendí mucho de lo que se ahora sobre gambas y empaquetado en Debian.

Perfil MP  
Objetivo: Re: Borrar Recursivamente
Gracias por la data. Voy a probar algunos codigos.

Perfil MP  
Objetivo: Re: Borrar Recursivamente
shordi escribió: [Ver mensaje]
Esta función te copia un directorio a otro lugar de forma recursiva. No es lo que pides, pero con la misma lógica no te puede costar mucho el adaptarlo al borrado:

Public Sub copia_dir(path_origen As String, path_destino As String, Optional tipo As String)

Dim arDir As String[]
Dim arFile As String[]
Dim nombredir, nombrefile As String
Dim nombresolo As String
Dim n As Integer

If Not tipo Then tipo = "*"

If Not Exist(path_destino) Then
Mkdir path_destino
Endif
arfile = Dir(path_origen, tipo, gb.file) 'extraemos los ficheros
For Each nombrefile In arfile 'los copiamos
Try Copy path_origen &/ nombrefile To path_destino &/ nombrefile
Next

n = InStr(path_origen, "/")
If n > 0 Then
nombresolo = Right(path_origen, - n + 1)
Else
nombresolo = path_origen
Endif
ardir = Dir(path_origen, "*", gb.Directory)
For Each nombredir In arDir 'extraemos los subdirectorios
copia_dir(path_origen &/ nombredir, path_destino &/ nombredir) 'usamos la recursividad
Next

End


Éste código me ha servido. Después de mucho tiempo lo estoy analizando (no es fácil para mi ). No comprendo bien la parte dónde se define la variable nombresolo. La variable no se usa en ninguna parte, podrías hechar un poco de luz al caso? Gracias!

Perfil MP  
Objetivo: Re: Borrar Recursivamente
Citar:
Éste código me ha servido. Después de mucho tiempo lo estoy analizando (no es fácil para mi ). No comprendo bien la parte dónde se define la variable nombresolo. La variable no se usa en ninguna parte, podrías hechar un poco de luz al caso? Gracias!


Código fósil. Es lo que tiene esto del copiar y pegar. La función original de la que extraje ese código hacía más cosas que no venían al caso. Al quitarlas se me coló lo del nombresolo. Puedes borrarlo sin problemas.
Pido disculpas por el despiste...

Perfil MP  
Ir a la página 1, 2  Siguiente

Página 1 de 2


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.4063s (PHP: -69% SQL: 169%)
Consultas SQL: 45 - Debug off - GZIP Activado