none
busqueda de ficheros mas antiguos de 1 año RRS feed

  • Pregunta

  • Hola a tod@s,

    En primer lugar gracias a todos por su ayuda, ya que mis conocimientos en VB son muy bajos....

    Me gustaría hacer un proyecto en el que pueda buscar en mi pc tanto en C: como en D: los ficheros *.doc, *.xlsx...... mas antiguos a 365 días......

    Y que el resultado me lo muestrer en un listbox

    Muchas gracias por vuestra ayuda

    domingo, 6 de noviembre de 2016 19:39

Respuestas

  • Para buscar ficheros se usa la clase System.IO.Directory, o System.IO.DirectoryInfo. La primera es más sencilla de usar, pero en tu caso te interesa la segunda porque en lugar de devolver solo los nombres de los ficheros, te devuelve una lista de FileInfo, que dentro contienen la fecha de modificación, lo que te permitirá quedarte solo con los que tengan más de 1 año.

    dim di as New System.IO.DirectoryInfo("c:\")

    Dim ficheros as FileInfo() = di.GetFiles("*.doc", SearchOption.AllDirectories)

    Esto busca en C: todos los ficheros *.doc. Evidentemente, luego puedes repetirlo cambiando la C: por D: y también puedes cambiar "*.doc" por otro tipo.

    En la variable "ficheros" te devuelve un array de FileInfo. Lo puedes recorrer con un bucle, y quedarte solo con los que tengan la antigüedad deseada:

    For Each fi as FileInfo in ficheros
        If fi.LastWriteTime < DateTime.Now.AddDays(-365) Then
            ListBox1.Items.Add(fi.FullName)
        End If
    Next

    domingo, 6 de noviembre de 2016 22:06

Todas las respuestas

  • Para buscar ficheros se usa la clase System.IO.Directory, o System.IO.DirectoryInfo. La primera es más sencilla de usar, pero en tu caso te interesa la segunda porque en lugar de devolver solo los nombres de los ficheros, te devuelve una lista de FileInfo, que dentro contienen la fecha de modificación, lo que te permitirá quedarte solo con los que tengan más de 1 año.

    dim di as New System.IO.DirectoryInfo("c:\")

    Dim ficheros as FileInfo() = di.GetFiles("*.doc", SearchOption.AllDirectories)

    Esto busca en C: todos los ficheros *.doc. Evidentemente, luego puedes repetirlo cambiando la C: por D: y también puedes cambiar "*.doc" por otro tipo.

    En la variable "ficheros" te devuelve un array de FileInfo. Lo puedes recorrer con un bucle, y quedarte solo con los que tengan la antigüedad deseada:

    For Each fi as FileInfo in ficheros
        If fi.LastWriteTime < DateTime.Now.AddDays(-365) Then
            ListBox1.Items.Add(fi.FullName)
        End If
    Next

    domingo, 6 de noviembre de 2016 22:06
  • Muchas gracias por tu ayuda

    y muchas gracias por explicarmelo

    jueves, 10 de noviembre de 2016 18:50