Jump to content

List files to array and sort them by date


Go to solution Solved by JohnQSmith,

Recommended Posts

Hi again :)

Is there any ready to use UDF to list files, put them to array and sort them by date?

As far as I know, RecFileListToArray by Melba and _FO_FileSearch by AZJIO doesn't provide this feature, please CMIIW.

I need to list and sort thousands (or maybe ten of thousand later) files over a 10/100 LAN network using SMB protocol,

so I prefer use a ready to use and optimized UDF rather than build by my low level and buggy programming skill :P

Thanks! :)

Link to comment
Share on other sites

  • Moderators

michaelslamet,

As far as I know you will need to use one of the recursive file search UDFs (obviously I recommend mine ;)) to get an array of the files, create a 2D array of the correct size,then loop through the original array adding the filename and the result of a FileGetTime call for it to the new array, and finally sort the new array on the DTG column. Not difficult to do at all - give it a go and see how you get on. :)

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

  • Moderators

michaelslamet,

Not that I know of - it is based on the QuickSort algorithm. :)

You do realise that sorting tens of thousands of files is going to take an age, I suppose? What exactly are you trying to do with this sort because there might well be some short cuts you can take. ;)

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

Honestly, i dont realise it can take that long :(

Now are only thousand of files, but they are growing.

I need to know at particular folder which files are new and when they are created, so I think sort them based on date is a good idea.

Maybe I need to add a option to let user choose to sort files between dates.

Any good idea? :)

Link to comment
Share on other sites

  • Moderators

michaelslamet,

 

I need to know at particular folder which files are new and when they are created

So why do you want to list all the files in one go? I would use a recursive filesearcher to get a folder tree (there is one I know of that can do that very easily ;)) and then go through that list one folder at a time to get a list of the files within each - that way you are only dealing with a reasonable number of files at any one time. When you look at the DTG of these files, it would be very useful if you had a "bottom limit" date - then you could ignore any files created before that date which would further reduce the number you have to sort. Does any of that sound reasonable? :)

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

Zedna, yes, I will wait for your UDF, please post here when they're ready. Thanks :)

Melba, yes, thats very reasonable, thanks for the idea!

What if this?

1. list all of the files start from folder I need to sort to array1

2. update the array1 with 2D array to store each file's date together with complete path+filename

3. Store some files that match date criteria (between date ... until date ...) to array2

4. Sort that array2

5. If doesn't have date criteria then sort array1

Is that reasonable?

Link to comment
Share on other sites

I need to know at particular folder which files are ...

Are you just retrieving from a single folder?

#include <Array.au3> ; for testing
Global $sDirectory = @WindowsDir, $sStdOut

$PID = Run(@ComSpec & ' /c DIR "' & $sDirectory & '" /B /A-D /O-D', "", @SW_HIDE, 2) ; /O-D = newest first, 2 = $STDOUT_CHILD
While Not @error
    $sStdOut &= StdoutRead($PID)
WEnd
$aStdOut = StringSplit(StringStripWS($sStdOut, 7), @CRLF)
_ArrayDisplay($aStdOut) ; for testing

You can remove the /B parameter and you'll get dates and file sizes in addition to filemnames.

Adding /S will search folders recursively, but the sort is not executed on the entire list, but at the folder level.

Link to comment
Share on other sites

JohnQSmith, thanks for the sfk info, I've tried it, seems great!

Do you know how to tell sfk to sort date descending? I cant find documentation about this elsewhere

http://stahlworks.com/dev/index.php?tool=list

If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...