EVDirRanges : Min/max values in folders

This script add-in adds columns showing min/max values for common properties of a folder's contents, leveraging Opus's integration with Everything (voidtools).

Main features :

  • Built with speed in mind.
  • Uses Everything to get the data, so results are instant.
  • Supports recursion for each folder.
  • Supports showing the name of the newest/oldest | bigger/smaller file.
  • You can optionally refine the results if needed (e.g. if you want to exclude certain filetypes from the results).
  • Option to include folder properties in the results.
  • Support for items in collections and libraries.
  • Age-related columns with an option for formatting.
  • Language-aware values for columns.
  • Many other details!

Currently, it adds the following columns:

  • Newest File Date Created
  • Newest File Created
  • Ago Newest Created
  • Newest File Date Created (Recursive)
  • Newest File Created (Recursive)
  • Ago Newest Created (Recursive)
  • Oldest File Date Created
  • Oldest File Created
  • Ago Oldest Created
  • Oldest File Date Created (Recursive)
  • Oldest File Created (Recursive)
  • Ago Oldest Created (Recursive)
  • Newest File Date Modified
  • Newest File Modified
  • Ago Newest Modified
  • Oldest File Date Modified
  • Oldest File Modified
  • Ago Oldest Modified
  • Newest File Date Modified (Recursive)
  • Newest File Modified (Recursive)
  • Ago Newest Modified (Recursive)
  • Oldest File Date Modified (Recursive)
  • Oldest File Modified (Recursive)
  • Ago Oldest Modified (Recursive)
  • Biggest Filesize
  • Biggest File
  • Biggest Filesize (Recursive)
  • Biggest File (Recursive)
  • Smaller Filesize
  • Smaller File
  • Smaller Filesize (Recursive)
  • Smaller File (Recursive)

Requirements

  • Everything.

  • If you don't have Everything running all the time, it's highly recommended to set up autorun in Opus. To do that, go to Preferences / Miscellaneous / Advanced. There look for everything_autolaunch and put the full path (or alias) of the Everything executable, followed by the -startup argument.

E.g.: "C:\Program Files\Everything\Everything.exe" -startup

This will allow the script to launch Everything automatically if needed.

How to Install

:warning: IMPORTANT: Requires DOpus v13.19 or later
Download the file below. Then go to Script Management (or run Prefs SCRIPTINSTALL) and select the downloaded file.

v2.0 : Download from here

Options

In the Script Management window, select EvDirRanges and click the Configure button.

  • log level
  • ignore folders properties : Set to True to ignore properties from folders itself
  • additional query : Additional Everything query to use as a refinement tool for results, e.g. to exclude some file types, etc.
  • relative filenames : When True, filename-related columns will have their content set relative to the calculated folder
  • age-related columns format : Format for age-related columns.
    days : Show as days elapsed. Numeric value (e.g. 30)
    duration : Show as a duration type column (e.g. 2 days, 12:01:23)
    text : Show as a full textual duration (e.g. 2 days, 12 hours, 1 minute, 23 s)

Usage

You'll find the new columns under Script > EvDirRanges.

Notes / Technical Details

  • I made this add-in using the latest Everything alpha build, it might work with v1.4.x. but there's no guarantee.
  • You can use the additional query config to refine the results. Just make sure to use Everything's own syntax. E.g. !ext:dat;bin to exclude all the dat and bin files from results.
  • Changing age-related columns format value effectively change age-related columns type between double(signed), duration or text. When using text formatting, the columns will be language-aware.
  • If a folder gets a value higher than the current date and time, the script will detect it and display it according to its type: signed for numeric, 0 for duration (negative durations aren't allowed), and prefixed with + for text.
  • For size-related columns, only files are considered. (ignore folders properties value won't be used).

Acknowledgments

  • David Carpenter from voidtools for Everything.
  • Opus devs, for an amazing program that goes beyond a file manager.

Changelog

v2.0 (27-Nov-2025):

  • Added new columns :
    • Biggest Filesize
    • Biggest File
    • Biggest Filesize (Rec)
    • Biggest File (Rec)
    • Smaller Filesize
    • Smaller File
    • Smaller Filesize (Rec)
    • Smaller File (Rec)
  • Changed script name to EvDirRanges (sorry about that).
  • Columns now update more reliably when certain configuration settings are changed.
  • Some minor changes.

v1.5 (27-Nov-2025):

  • Added new columns :
    • Ago Newest Created
    • Ago Oldest Created
    • Ago Newest Created (Rec)
    • Ago Oldest Created (Rec)
    • Ago Newest Modified
    • Ago Oldest Modified
    • Ago Newest Modified (Rec)
    • Ago Oldest Modified (Rec)
  • Added age-related columns format option in the Script config so you can choose the type you want these new columns to use (double(signed), duration or text). Numeric and duration type should work better for filtering.
  • Added a notification update (when opening the script config dialog).
  • Other minor changes.

v1.0 (27-Nov-2025):

  • Initial release.
7 Likes

v1.5 (27-Nov-2025):

  • Added new columns :
    • Ago Newest Created
    • Ago Oldest Created
    • Ago Newest Created (Rec)
    • Ago Oldest Created (Rec)
    • Ago Newest Modified
    • Ago Oldest Modified
    • Ago Newest Modified (Rec)
    • Ago Oldest Modified (Rec)
  • Added age-related columns format option in the Script config so you can choose the type you want these new columns to use (double(signed), duration or text). Numeric and duration type should work better for filtering.
  • Added a notification update (when opening the script config dialog).
  • Other minor changes.
1 Like

v2.0 (27-Nov-2025):

  • Added new columns :
    • Biggest Filesize
    • Biggest File
    • Biggest Filesize (Rec)
    • Biggest File (Rec)
    • Smaller Filesize
    • Smaller File
    • Smaller Filesize (Rec)
    • Smaller File (Rec)
  • Changed script name to EvDirRanges (sorry about that).
  • Columns now update more reliably when certain configuration settings are changed.
  • Some minor changes.
3 Likes

@errante I wonder how this could be applied to path depth, as discussed here: PathDepth (Display depth in folder hierarchy) . Specifically, could EVDirRanges be used to quickly calculate the depth of the current folder relative to the drive (i.e., C:\) AND calculate that folder’s deepest file depth relative to that folder’s position in the path given its leverage of Everything?

For example, say one has a directory structured as C:\Users\Name\Documents\D-5\D-6\D-7\D-8\

  • A file in C:\Users\Name\Documents would be at path Depth = 4
  • A file named “New Document” is in C:\Users\Name\Documents\D-5\D-6\D-7\D-8\ would be at path Depth = 8

Imagine three columns:

  1. Current Depth: Shows depth of file or folder while in the given folder path
  2. Largest Depth: Shows depth of file in the largest depth of the file path
  3. File Depth: for file search results, shows depth of file in its folder path

While in C:\Users\Name\Documents:

  • Current Depth column would indicate 4
  • Largest Depth column would indicate 8

Searching for “New Document:

  • File Depth column would indicate 8

Interested in your thoughts here.

1 Like

Yes, Everything could handle all three much faster, but there are a few things to consider:

  • Everything's SDK3 should let you do this really easily with a single query. The bad news is that Opus still hasn't implemented it.
  • With the current SDK, it would only help with enumeration, which would only be useful for case 2. But then you'd have to process potentially a huge number of paths, which would slow things down on deeper folder structures.

One thing you can do is use the CLI version of Everything, which does support SDK 3. I actually use it in another script to grab certain properties from Everything. It should be fast enough because in most cases you should only need to query once. The main issue with that approach is that you don't have a reliable way to tell which items are expecting values, as discussed here without a solution.

When I have time, I'll check the best way to include the Everything CLI and blend it with the current work here (or if it'd be better to keep it in a separate script). Since I'm not the main audience for this script :grinning_face:, I keep wondering what the real use and purpose of that data is inside Opus. It feels pretty niche to me.

Thanks for the explanation. I agree that this is a low-priority, nice-to-have, niche use case. For me, it helps

  • better visualize directory structure
  • identify potential “hidden” (not system hidden) files
  • sort and filter in flat view

That said, I truly appreciate what you already provide to the DOpus community! Thanks!

Assuming you're using Everything v.1.5, if you run a search in its main window using:

c:\windows\ folder: add-column:depth;max-child-depth:

You will then see 2 new columns : Folder Depth and Max Child Depth. Is that the data you want in Opus, right? Any other values besides those two? Give some reproducible examples using Everything if possible.

If I have this right, for file depth, one would use file: add-column:depth

Is it really this simple in Everything?

I think that captures what I’m looking for, thanks!

Now how does this translate to DOpus?

AFAIK, currently the easiest option would be to use Everything CLI to export those values into Opus.

Yes.

Given that you want the exact same values, that gives me some ideas :
Wouldn't it be neat to have a script with a GUI like MediaInfo++ that lets you import all your desired properties from Everything? That way, if you have any additional indexed properties there, you can import them into Opus and get instant values in bulk. Currently I have something similar for my personal use, which doesn't have any GUI though.

That should be something way more useful to do, IMO :grinning_face:

1 Like

Well, I had to look up what “CLI” and “SDK” stood for, if that’s any indication of my skill level. I also reviewed the EVDirRanges script above, the Run Count for Opus script, and Command Line Options - voidtools to see what I could learn.

In short, I learned two things:

  1. You are clearly gifted
  2. I am clearly not

At this point, I simply have no idea how to get from an Everything query to a DOpus column.

That said, I will keep poking around for a simple example that I can follow or reverse-engineer.

Thanks again @errante for this amazing script.

I saw you recently added a check-for-updates function. Ideally, I think there should be a setting to disable this check.

Thanks. Can I know why?

Sure. Overall, I think it’s just best practice and a common setting. My personal reasons are that I’d like to control which of my apps communicate with external servers (and how often). It wasn’t clear to me from the code whether it happens on every DOPus start-up or more frequently when I saw the while(true) loop.

So I’d say it’s mainly security and privacy reasons. Thinking of all the supply-chain attacks we’ve seen previously, I try to be cautious when installing scripts and running code from sources (public forums) I don’t know. So the less external communication (and possibly even automatic upgrades*) the better.

For the same reason, I personally also prefer the to provide the source code in clear-text instead of in a packaged .opusscriptinstall file**, but that’s of course a tradeoff between security and usability.

That’s my approach/opinion and I hope it makes sense to you. :slight_smile:

Again, many thanks for the script!


* I know your script doesn’t do automatic upgrades, it’s just an example.

** I know I can unzip and verify the code.

Only when you open the script's config dialog.

The script only reads the main post for its page here in the forum to check a specific section for the latest uploaded version.

I don't think I've ever seen an Opus script doing that kind of thing. It would be too obvious IMO.

That said, it's not in my plans, sorry.

Oh, ok, that’s good to know.

I didn’t mean it’s happened with Opus scripts, but it happened to other software.

That’s ok. Thanks.

You can check this script to find out