Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Listar Todos Los Archivos De Una Carpeta Y Sus Subcarpetas Recursivamente
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Listar Todos Los Archivos De Una Carpeta Y Sus Subcarpetas Recursivamente 
 
buenas,

ando medio desconectado de la programación... pero aquí ando con nuevas ideas....
para el programa taller2015 me he dado cuenta que necesito una analizador de tamaños de archivos..... porque esto
pues supongamos un cliente nos dice que respaldemos la información de la pc y lo mas importante son las fotos lo demás si se respalda se respalda o sino no, no importa.

mi idea es detectar con esta función archivos grandes innecesarios, como programas descargados de muchos megas, o vídeos o películas prescindibles, que agrandan el respaldo y no son importantes.

la idea es hacer un clic en un control dirchoose por ejemplo y que liste todos los archivos en un tableview con 3 datos fundamentales que serán, ruta completa, tipo de archivo y tamaño, al menos eso es lo que busco al principio, después podremos ponernos finos ajajajja.

bueno dejo el tema para que vayamos tirando ideas, códigos o comentarios.

Saludos
 




===================
Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
 
última edición por v3ctor el Domingo, 03 Julio 2016, 06:56; editado 1 vez 
v3ctor - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Listar Todos Los Archivos De Una Carpeta Y Sus Subcarpetas Recursivamente 
 
empece con este codig que lista las carpetas, hay que agregar los archivos....

Public Sub listar(ruta As String)
  Dim carpetas As String[]
  Dim MasCarpetas As String[]
  Dim archivos As String[]
  Dim carpeta As String
  Dim archivo As String
  Dim RutaPadre As String
  '
  ' RutaPadre = File.ruta)
  ' Print RutaPadre
  RutaPadre = ruta
'   Print "rutapadre=" & RutaPadre
  carpetas = Dir(ruta, "*", gb.Directory)
  If carpetas.Count < 1 Then
    ' Print "0 carpetas encontradas en: " & RutaPadre
    Return
  Endif
  
  
  For Each carpeta In carpetas
    ' Print "1_ " & carpeta
    Print "2_ " & ruta &/ carpeta
    
    MasCarpetas = Dir(ruta &/ carpeta, "*", gb.Directory)
    
'     Print "contador carpetas=" & MasCarpetas.Count
    
    If MasCarpetas.Count > 0 Then
       listar(ruta &/ carpeta)
    Endif
  Next
  
  
End


esto es un borrador claro para ir viendo como hacerlo  
 




===================
Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
 
v3ctor - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Listar Todos Los Archivos De Una Carpeta Y Sus Subcarpetas Recursivamente 
 
estoy probando esto donde aparecen los archivos...

Public Sub listar(ruta As String)
  Dim carpetas As String[]
  Dim MasCarpetas As String[]
  Dim archivos As String[]
  Dim carpeta As String
  Dim archivo As String
  Dim RutaPadre As String
  '
  
  RutaPadre = ruta
'   Print "rutapadre=" & RutaPadre

 archivos = Dir(ruta, "*", gb.File)
 
 If archivos.Count > 0 Then
   For Each archivo In archivos
     Print "Archivo: " & ruta &/ archivo & " : " & Stat(ruta &/ archivo).Size
   Next
 Endif
 '

  carpetas = Dir(ruta, "*", gb.Directory)
  If carpetas.Count < 1 Then
    ' Print "0 carpetas encontradas en: " & RutaPadre
    Return
  Endif
  
  
  For Each carpeta In carpetas
    ' Print "1_ " & carpeta
Print "Carpeta: " & ruta &/ carpeta
    
    MasCarpetas = Dir(ruta &/ carpeta, "*", gb.Directory)
    
'     Print "contador carpetas=" & MasCarpetas.Count
    
    If MasCarpetas.Count > 0 Then
       listar(ruta &/ carpeta)
    Endif
  Next
  
  
End



MasCarpetas = Dir(ruta &/ carpeta, "*", gb.Directory)  con esta linea tengo problema si son carpetas de sistema con el mensaje "acceso prohibido"
 




===================
Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
 
v3ctor - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Listar Todos Los Archivos De Una Carpeta Y Sus Subcarpetas Recursivamente 
 
llamada a subrutina:

Public Sub btnBuscar_Click()
  Dim archivo As String
  Dim parte As String[]
  Dim fila As Integer = 0
  Dim filaT As Integer = 1
  
    Print DirChooser1.SelectedPath
   ListaArchivos = New String[]
   SubAA.listar(DirChooser1.SelectedPath)
  
  tvArchivos.Clear
 
  
  For Each archivo In ListaArchivos
    Print archivo
    parte = Split(archivo, ":")
    tvArchivos.Rows.Count = filaT
    tvArchivos[fila, 0].Text = parte[1]
    tvArchivos[fila, 1].Text = parte[0]
    Inc fila
    Inc filaT
  Next
 
End



subrutina:

Public Sub listar(ruta As String)
  Dim carpetas As String[]
  Dim MasCarpetas As String[]
  Dim archivos As String[]
  Dim carpeta As String
  Dim archivo As String
  Dim RutaPadre As String
  Dim Dato As String
  '
  
  RutaPadre = ruta

 archivos = Dir(ruta, "*", gb.File)
 
 If archivos.Count > 0 Then
   For Each archivo In archivos
     Print "Archivo: " & ruta &/ archivo & ":" & Stat(ruta &/ archivo).Size
     Dato = Trim$(ruta &/ archivo & ":" & Stat(ruta &/ archivo).Size)
     VerArchivos.ListaArchivos.Add(Dato)
   Next
 Endif
 '
  carpetas = Dir(ruta, "*", gb.Directory)
  If carpetas.Count <1> 0 Then
       listar(ruta &/ carpeta)
    Endif
  Next
  
End


con este código mas  o menos va saliendo algo de lo que pretendo.....

falta mucho todavía.....
 




===================
Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
 
v3ctor - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Listar Todos Los Archivos De Una Carpeta Y Sus Subcarpetas Recursivamente 
 
Puedes usar Rdir para hacer un dir recursivo a una carpeta y stat para obtener información de cada uno de los archivos
Dim file1 As String
Dim ruta As String
ruta = "/la/ruta/donde/quieres/buscar/los/archivos/" (recuerda acabarlo con '/')
For Each file1 In RDir(ruta, "*.*", gb.file) 'gb.file es para que te devuelva solo ficheros
    With Stat(ruta & file1)
      Message.Info(.Path) 'esto te devuelve la ruta completa del archivo
      Message.Info(.size) 'el tamaño del archivo
      Message.info(.Time) 'la fecha de modificación del fichero
      'stat te puede devolver mucha más información, revisala
    End With
Next


'Espero que te sirva
 



 
última edición por garvied el Martes, 05 Julio 2016, 04:10; editado 1 vez 
garvied - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Listar Todos Los Archivos De Una Carpeta Y Sus Subcarpetas Recursivamente 
 
Muy bien, garvied !
 



 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Listar Todos Los Archivos De Una Carpeta Y Sus Subcarpetas Recursivamente 
 
garvied escribió: [Ver mensaje]
Puedes usar Rdir para hacer un dir recursivo a una carpeta y stat para obtener información de cada uno de los archivos
Dim file1 As String
Dim ruta As String
ruta = "/la/ruta/donde/quieres/buscar/los/archivos/" (recuerda acabarlo con '/')
For Each file1 In RDir(ruta, "*.*", gb.file) 'gb.file es para que te devuelva solo ficheros
    With Stat(ruta & file1)
      Message.Info(.Path) 'esto te devuelve la ruta completa del archivo
      Message.Info(.size) 'el tamaño del archivo
      Message.info(.Time) 'la fecha de modificación del fichero
      'stat te puede devolver mucha más información, revisala
    End With
Next


'Espero que te sirva


gracias por el aporte, me fije en "funciones de carpetas y archivos" pero no vi RDir en ese momento. (como a veces miramos y no vemos jajaja)

esto anda bien, pero sigo encontrando que si lo usas en directorios de sistema da errores de acceso, habria que ver como evitar eso.


Public Sub ListarArchivos2(ruta As String)
  Dim file1 As String
  
  For Each file1 In RDir(ruta, "*.*", gb.file) 'gb.file es para que te devuelva solo ficheros
    ' With Stat(ruta & file1)'faltaba barra
    With Stat(ruta &/ file1)
      Print .Path & ":" & .Size
      ' Message.Info(.Path) 'esto te devuelve la ruta completa del archivo
      ' Message.Info(.size) 'el tamaño del archivo
      ' Message.info(.Time) 'la fecha de modificación del fichero
      'stat te puede devolver mucha más información, revisala
    End With
  Next
  
End


muchas gracias por el aporte garvied
 




===================
Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
 
v3ctor - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Listar Todos Los Archivos De Una Carpeta Y Sus Subcarpetas Recursivamente 
 
garvied escribió: [Ver mensaje]
Puedes usar Rdir para hacer un dir recursivo a una carpeta y stat para obtener información de cada uno de los archivos
For Each file1 In RDir(ruta, "*.*", gb.file) 'gb.file es para que te devuelva solo ficheros
 


'Espero que te sirva


"*.*"    <------ este filtro no es bueno, pues solo muestra archivos con .extensión,  es mejor poner  "*"   así te muestra cualquier archivo incluso sino tiene extensión como es muy común en linux
 




===================
Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
 
v3ctor - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Listar Todos Los Archivos De Una Carpeta Y Sus Subcarpetas Recursivamente 
 
les cuento que ando erredado con algo que se supone ya debería tenerlo mas que claro            

stat().size devuelve un numero que representa bytes... si no es así corrijan.

estoy haciendo una simple rutina donde esos bytes si son menor que 10 megas y mayor que un kilobyte ponga kilobyte
si es menor de1 kilobyte lo ponga en bytes, si es mayor a un gigabyte lo ponga en gigas.

jajajaj el asunto que no tengo claro los dividendos para pasar de bytes a, kilobytes, megabytes y gigabytes

1024 bytes es un kilobyte asi sucesivamente. alguien tiene claro este tema?

pasar siempre de bytes que es lo que da stat a las demás medidas


Hay en gambas algún comando que haga esto?
No debería tener gambas un comando que maneje conversiones de tamaños?

tipo    función convertirDE_A(size, de, a)
 




===================
Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
 
última edición por v3ctor el Miercoles, 06 Julio 2016, 18:18; editado 3 veces 
v3ctor - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Listar Todos Los Archivos De Una Carpeta Y Sus Subcarpetas Recursivamente 
 
Esto lo uso en el cliente ftp...

Public Function ctamanio(tamano As Float) As String
    
    Dim size As String    

    If tamano > 1048576 Then
         tamano = Round((tamano / 1048576), -1)
         size = CStr(tamano) & " Mb  "
    Else If tamano > 1024
         tamano = Round((tamano / 1024), -1)
         size = CStr(tamano) & " Kb  "
    Else
        size = LTrim(CStr(tamano)) & " B   "
    End If
    size = Space(12 - Len(size)) & size
    Return size
    
End

 




===================
No podemos regresar
 
última edición por shordi el Miercoles, 06 Julio 2016, 18:51; editado 1 vez 
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 ¿como Empaquetar Y Comprimir Varios Archi... jsbsan Shell Scripting 9 Domingo, 20 Enero 2013, 00:29 Ver último mensaje
jsbsan
No hay nuevos mensajes Unir Dos Archivos Que Estan En La Carpeta ... jsbsan General 8 Martes, 07 Junio 2016, 13:53 Ver último mensaje
tercoIDE
No hay nuevos mensajes Buscar Y Listar Grandes Cantidades De Arch... tincho Aplicaciones/Fragmentos de Código 7 Sabado, 05 Enero 2019, 17:07 Ver último mensaje
tincho
No hay nuevos mensajes Hay Alguna Forma De Extraer Todos Los Icon... tincho Mundo Linux 6 Sabado, 11 Enero 2020, 21:43 Ver último mensaje
tincho
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 0 invitados
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