Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 2
Ir a la página 1, 2  Siguiente
 
Borrar Recursivamente
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje 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.
 



 
drjuano - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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

 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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
 

 



 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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!
 



 
sebikul - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Borrar Recursivamente 
 
Guapo ese "Mundus", Sebikul.
 



 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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.
 



 
sebikul - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Borrar Recursivamente 
 
Gracias por la data. Voy a probar algunos codigos.
 



 
drjuano - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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!
 



 
drjuano - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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...
 



 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Borrar Un Registro numero110 Bases de Datos 13 Sabado, 05 Diciembre 2009, 00:45 Ver último mensaje
shordi
No hay nuevos mensajes Crear Directorios Recursivamente shordi Aplicaciones/Fragmentos de Código 3 Viernes, 06 Marzo 2015, 14:08 Ver último mensaje
Shell
No hay nuevos mensajes Actualizar Colección Recursivamente Shell General 6 Jueves, 30 Junio 2016, 23:46 Ver último mensaje
Shell
No hay nuevos mensajes Listar Todos Los Archivos De Una Carpeta Y... v3ctor General 9 Miercoles, 06 Julio 2016, 18:50 Ver último mensaje
shordi
 

Publicar nuevo tema  Responder al tema  Página 1 de 2
Ir a la página 1, 2  Siguiente

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
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



  

 

cron