Loop through ALL files in a folder based on 'Last Modified Date'

29,714

You could read the file names and dates into a disconnected recordset and sort that by date:

Set fso = CreateObject("Scripting.FileSystemObject")

Set list = CreateObject("ADOR.Recordset")
list.Fields.Append "name", 200, 255
list.Fields.Append "date", 7
list.Open

For Each f In fso.GetFolder("C:\some\where").Files
  list.AddNew
  list("name").Value = f.Path
  list("date").Value = f.DateLastModified
  list.Update
Next

list.MoveFirst
Do Until list.EOF
  WScript.Echo list("date").Value & vbTab & list("name").Value
  list.MoveNext
Loop

list.Sort = "date DESC"

list.MoveFirst
Do Until list.EOF
  WScript.Echo list("date").Value & vbTab & list("name").Value
  list.MoveNext
Loop

list.Close
Share:
29,714
slayernoah
Author by

slayernoah

SO has helped me SO much. I want to give back when I can. And I am #SOreadytohelp http://stackoverflow.com/users/1710577/slayernoah #SOreadytohelp

Updated on June 29, 2020

Comments

  • slayernoah
    slayernoah almost 4 years

    I need to loop through the files in a given folder in descending order of 'Last Modified Date'.

    In the first iteration of the loop I need to be able to open the most recently modified file for reading and close it. In the second iteration, I need to be able to open the 2nd most recently updated file for reading and close it etc.

    1. Is there a built in method that allows a FileSystemObject to sort the files or do we absolutely have to write custom sorting routine?

    2. If we have to go with a custom sorting routine, is it possible to write this without having multiple functions? i.e. all code in the a main function.

    3. Speed is a concern since there are to be a lot of files to sort through. Therefore any custom procedures should be efficient.

  • slayernoah
    slayernoah almost 11 years
    Thanks a lot. I will try this out and let you know!
  • st12
    st12 over 6 years
    This script echoes the list of files twice. Once in arbitrary order, then once sorted by date. Just mentioning this in case anyone is wondering why the list echoed first is not sorted.