none
listar nombres de archivos en un directiorio modificados el dia de hoy

    Pregunta

  • Hola que tal

    tengo que hacer un programa que sea capaz de obterner los nombres de los archivos de un directorio y colocarlos en un listbox, pero solo necesito obtener los que se modificaron hoy, estos pueden ser de una extencion .txt

    me podrian decir como puedo lograrlo?

    martes, 13 de septiembre de 2016 23:36

Respuestas

  • Natividad_2012,

    Por cada archivo que recuperes de una ruta de disco debes leer los valores de sus atributos para obtener la última fecha de modificación:

    Private Sub btnBuscarArchivos_Click(sender As Object, e As EventArgs) Handles btnBuscarArchivos.Click
    
            Dim fbd As New FolderBrowserDialog()
    
            If fbd.ShowDialog() = DialogResult.OK Then
                Dim patronBusqueda As String = "*.txt"
    
                For Each file As String In IO.Directory.GetFiles(
                        fbd.SelectedPath,
                        patronBusqueda,
                        IO.SearchOption.TopDirectoryOnly)
    
                    Dim info As New IO.FileInfo(file)
    
                    If info.LastWriteTime.[Date].CompareTo(DateTime.Today.[Date]) = 0 Then
                        ListBox1.Items.Add(IO.Path.GetFileName(file))
                    End If
                Next
            End If
        End Sub

    Coloca un objeto de tipo ListBox sobre tu formulario y ejecuta el código.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    martes, 13 de septiembre de 2016 23:51

Todas las respuestas

  • Natividad_2012,

    Por cada archivo que recuperes de una ruta de disco debes leer los valores de sus atributos para obtener la última fecha de modificación:

    Private Sub btnBuscarArchivos_Click(sender As Object, e As EventArgs) Handles btnBuscarArchivos.Click
    
            Dim fbd As New FolderBrowserDialog()
    
            If fbd.ShowDialog() = DialogResult.OK Then
                Dim patronBusqueda As String = "*.txt"
    
                For Each file As String In IO.Directory.GetFiles(
                        fbd.SelectedPath,
                        patronBusqueda,
                        IO.SearchOption.TopDirectoryOnly)
    
                    Dim info As New IO.FileInfo(file)
    
                    If info.LastWriteTime.[Date].CompareTo(DateTime.Today.[Date]) = 0 Then
                        ListBox1.Items.Add(IO.Path.GetFileName(file))
                    End If
                Next
            End If
        End Sub

    Coloca un objeto de tipo ListBox sobre tu formulario y ejecuta el código.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    martes, 13 de septiembre de 2016 23:51
  • Hola que tal

    tu codigo fucniona de maravilla, muchas gracias!!

    le estuve haciendo unas modificaciones para adaptarlo a mis necesidades, le puse un boton para que sirva de browser y otro para que ejecute todo lo el programa, y otras cosillas..

    pero cambie el listbox por un listview y le agregue 2 columnas, pero ahora me manda todos los nombres de los archivos que estan dentro de la carpeta, y no solo los del dia de hoy.... como puedo cambiar eso?

    Option Explicit On
    Option Strict On
    Imports System.IO 

    Public Class Form1

        Private Sub Button3_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button3.Click

            ListView1.Items.Clear()
            Try

                Dim fdb As String

                fdb = TextBox1.Text

                Dim patronbusqueda As String = "*.log"

                For Each file As String In IO.Directory.GetFiles(fdb, patronbusqueda, IO.SearchOption.AllDirectories)

                    Dim info As New IO.FileInfo(file)

                    'If info.LastAccessTimeUtc.[Date].CompareTo(DateAndTime.Today.[Date]) = 0 Then
                    Dim item As New ListViewItem(info.Name.ToString)
                    With item
                        .SubItems.Add(info.LastWriteTime.ToShortDateString & " " & _
                                      info.LastWriteTime.ToShortTimeString)
                        ListView1.Items.Add(item)

                    End With

                Next
            Catch ex As Exception
                Debug.Print(ex.Message.ToString)
                Beep()

            End Try
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            With ListView1
                .Columns.Add("Nombre", 150)
                .Columns.Add("Fecha y hora", 150)
                .View = View.Details
                .GridLines = True
            End With
        End Sub
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            If FolderBrowserDialog1.ShowDialog() = DialogResult.OK Then
                TextBox2.Text = FolderBrowserDialog1.SelectedPath
            End If
        End Sub

    martes, 20 de septiembre de 2016 2:25
  • Natividad_2012,

    Si el código lo tienes tal y como muestras entonces es lógico que recuperes todos los archivos porque comentaste la instrucción donde se condiciona los archivos modificados el día de hoy:

    'QUITAR la marca de comentario
    'If info.LastAccessTimeUtc.[Date].CompareTo(DateAndTime.Today.[Date]) = 0 Then


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    martes, 20 de septiembre de 2016 3:36
  • si, el codigo esta asi tal cual y si deshabilito la marca del comentario en el IF sigue sin escribiendo todos los nombres que hay no solo los del dia de hoy 
    martes, 20 de septiembre de 2016 21:22