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
Listar Todos Los Archivos De Una Carpeta Y Sus Subcarpetas Recursivamente
Objetivo: Listar Todos Los Archivos De Una Carpeta Y Sus Subcarpetas Recursivamente
última edición por v3ctor el Domingo, 03 Julio 2016, 06:56; editado 1 vez
última edición por v3ctor el Domingo, 03 Julio 2016, 06:56; editado 1 vez
Objetivo: 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....
esto es un borrador claro para ir viendo como hacerlo
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
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
Objetivo: Re: Listar Todos Los Archivos De Una Carpeta Y Sus Subcarpetas Recursivamente
estoy probando esto donde aparecen los archivos...
MasCarpetas = Dir(ruta &/ carpeta, "*", gb.Directory) con esta linea tengo problema si son carpetas de sistema con el mensaje "acceso prohibido"
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
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"
Objetivo: Re: Listar Todos Los Archivos De Una Carpeta Y Sus Subcarpetas Recursivamente
llamada a subrutina:
subrutina:
con este código mas o menos va saliendo algo de lo que pretendo.....
falta mucho todavía.....
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
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
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.....
Objetivo: Re: Listar Todos Los Archivos De Una Carpeta Y Sus Subcarpetas Recursivamente
última edición por garvied el Martes, 05 Julio 2016, 04:10; editado 1 vez
Puedes usar Rdir para hacer un dir recursivo a una carpeta y stat para obtener información de cada uno de los archivos
'Espero que te sirva
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
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
Objetivo: Re: Listar Todos Los Archivos De Una Carpeta Y Sus Subcarpetas Recursivamente
Muy bien, garvied !
Objetivo: Re: Listar Todos Los Archivos De Una Carpeta Y Sus Subcarpetas Recursivamente
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.
muchas gracias por el aporte garvied
garvied escribió: [Ver mensaje]
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
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
Objetivo: Re: Listar Todos Los Archivos De Una Carpeta Y Sus Subcarpetas Recursivamente
"*.*" <------ 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
garvied escribió: [Ver mensaje]
"*.*" <------ 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
Objetivo: Re: Listar Todos Los Archivos De Una Carpeta Y Sus Subcarpetas Recursivamente
última edición por v3ctor el Miercoles, 06 Julio 2016, 18:18; editado 3 veces
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)
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)
última edición por v3ctor el Miercoles, 06 Julio 2016, 18:18; editado 3 veces
Objetivo: Re: Listar Todos Los Archivos De Una Carpeta Y Sus Subcarpetas Recursivamente
última edición por shordi el Miercoles, 06 Julio 2016, 18:51; editado 1 vez
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
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
última edición por shordi el Miercoles, 06 Julio 2016, 18:51; editado 1 vez
Página 1 de 1
No puede crear mensajesNo 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.4127s (PHP: -58% SQL: 158%)
Consultas SQL: 49 - Debug off - GZIP Activado