Sign in to follow this  
Followers 0
michaelslamet

List files to array and sort them by date

25 posts in this topic

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! :)

Share this post


Link to post
Share on other sites



Hi,

You can edit the existing UDFs to added an index in the array which will contain the file date, then sort the array according to this date with the _ArraySort function.

Br, FireFox.


 

OS : Win XP SP2 (32 bits) / Win 7 SP1 (64 bits) / Win 8 (64 bits) | Autoit version: latest stable / beta.
Hardware : Intel(R) Core(TM) i5-2400 CPU @ 3.10Ghz / 8 GiB RAM DDR3.

My UDFs : Skype UDF | TrayIconEx UDF | GUI Panel UDF | Excel XML UDF | Is_Pressed_UDF

My Projects : YouTube Multi-downloader | FTP Easy-UP | Lock'n | WinKill | AVICapture | Skype TM | Tap Maker | ShellNew | Scriptner | Const Replacer | FT_Pocket | Chrome theme maker

My Examples : Capture toolIP Camera | Crosshair | Draw Captured Region | Picture Screensaver | Jscreenfix | Drivetemp | Picture viewer

My Snippets : Basic TCP | Systray_GetIconIndex | Intercept End task | Winpcap various | Advanced HotKeySet | Transparent Edit control

 

Share this post


Link to post
Share on other sites

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


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______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

 

Share this post


Link to post
Share on other sites

Firefox and Melba, you guys are super fast! :)

Ok then I'm going to see how it can be done using RecFileListToArray or _FO_FileSearch UDF.

Melba, no hurt feeling if I'm using _FO_FileSearch, ok? o:)

Share this post


Link to post
Share on other sites

btw, to sort the array, is there any method faster than _ArraySort worth to try?

Share this post


Link to post
Share on other sites

You will have to search over the internet to know the faster sorting algorithm for your needs.

It remembers me this >topic.

Br, FireFox.


 

OS : Win XP SP2 (32 bits) / Win 7 SP1 (64 bits) / Win 8 (64 bits) | Autoit version: latest stable / beta.
Hardware : Intel(R) Core(TM) i5-2400 CPU @ 3.10Ghz / 8 GiB RAM DDR3.

My UDFs : Skype UDF | TrayIconEx UDF | GUI Panel UDF | Excel XML UDF | Is_Pressed_UDF

My Projects : YouTube Multi-downloader | FTP Easy-UP | Lock'n | WinKill | AVICapture | Skype TM | Tap Maker | ShellNew | Scriptner | Const Replacer | FT_Pocket | Chrome theme maker

My Examples : Capture toolIP Camera | Crosshair | Draw Captured Region | Picture Screensaver | Jscreenfix | Drivetemp | Picture viewer

My Snippets : Basic TCP | Systray_GetIconIndex | Intercept End task | Winpcap various | Advanced HotKeySet | Transparent Edit control

 

Share this post


Link to post
Share on other sites

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


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______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

 

Share this post


Link to post
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? :)

Share this post


Link to post
Share on other sites

#9 ·  Posted (edited)

I need to exactly this too in one of my projects which I'm working on now.

So if you will wait some days/weeks I will post here ready-made UDF.

EDIT: I don't need recursivity, so maybe my solution will not fit your needs

Edited by Zedna

Share this post


Link to post
Share on other sites

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


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______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

 

Share this post


Link to post
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?

Share this post


Link to post
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.

Share this post


Link to post
Share on other sites

Spiff,

I need to search folder recursively :) Thanks for providing the way for a single folder!

Zedna, ok thanks for the updated information. Why dont you create one that support recursive folder? :P

I will help others too :)

Share this post


Link to post
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

AZJIO, I have left message in your Create list of files thread

Share this post


Link to post
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

Share this post


Link to post
Share on other sites

BrewManNH,

I've visited that url before I post question about sort the date in descending. The page is complete enough but seems I cant find about sorting the date descending anywhere on the page :(

Share this post


Link to post
Share on other sites

   -late[=n]  sort by time, list latest   [n] files last
   -old[=n]   sort by time, list oldest   [n] files last

Share this post


Link to post
Share on other sites

Danwilli,

Not that one, Tried that one before :P

Those options are to put latest (or oldest) on the filelist, not to let it sorted descending

Share this post


Link to post
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
Sign in to follow this  
Followers 0