Everything Dupes : Search for duplicates with DOpus and Everything

Everything Dupes is a script command for Directory Opus, that allows you to automate duplicate search, using the combined power of voidtools Everything and DOpus. Using the file database searching ability provided by Everything, coupled with the file property access capabilities provided by the Directory Opus scripting interface, you can now find duplicates of single or multiple files throughout your system in a matter of seconds!
You can search duplicates based on their size, extension, name, modification, creation, and many other extended properties, combined or separately, and you can specify the locations to search for them.

Its main features are:

  • Duplicate search using the Everything database, then refine the search with DOpus Duplicate File Finder tool.
  • Search by size, extension, base name, creation and modification date (either by itself or combined).
  • Search by extended properties (according to compatibility, see list below) (It is recommended to use those properties indexed by Everything).

:warning: PLEASE READ BEFORE PROCEED

This command was designed and tested using Everything Alpha v1.5.0.13.70 or later.

HOW TO INSTALL

Download the file below. Then just double click on it or run Prefs SCRIPTINSTALL and select the downloaded file.
:warning: IMPORTANT: Needs at least v13.6
v1.6.1 : SearchDupesEV.opusscriptinstall

:warning: IMPORTANT: Needs at least v13.7.4
v1.7.0 Beta : SearchDupesEV.opusscriptinstall

USAGE

You can use Everything Dupes by simply invoking it with EVDupes.
By default (without using any value for PROPERTIES), the search is performed using the size and extension of the selected files.
Based on the type and number of items to be used with the command, there are multiple search modes, which are detailed below:

CASE 1 selected files only Search for dupes GLOBALLY for the selected files.
CASE 2 1 or more selected files, plus 1 or more folders Search for dupes for the selected files ONLY in the selected folders
CASE 3 1 or more selected folders Search for dupes for all the files included ONLY in those folders

COMMAND ARGUMENTS

The following arguments are available:

Argument Type Value Description
FILES /K/M "filepath1" "filepath2"... Specifies the name of the file or files to use with this command. If you don't provide this argument the command operates on all selected files in the source Lister. (and destination, where applicable)
IN /K/M "dirpath1" "dirpath2"... Specifies the name of the folder or folders to use with this command. If you don't provide this argument the command operates on all selected folders in the source Lister. (and destination, where applicable)
LOCAL /S Convert CASE 1 to CASE 2 using source path as the folder to search in. Do not combine with others args.
NODODUPES /S Don't perform a Opus Duplicate Finder task, only search based on Everything results.
READFOLDER /S Use folder content (convert CASE 2 and 3 to CASE 1)
RECURSIVE /S In conjunction with READFOLDER, read folders recursively (for CASE 2 and 3)
USEDEST /S Add destination items to all cases above

The arguments used to define what information to use for the search (modifiers) are:

Argument Type Value Description
MD5 /O Force use MD5 comparison when searching for dupes.
no Force disable MD5 comparison when searching for dupes.
PROPERTIES /K colname Include file properties info in the search. See list below.
List of supported properties:
Name Keyword
Documents:Authors author
Documents:Category category
Documents:Company companyname
Documents:Copyright copyright
Documents:Document created date doccreateddate
Documents:Last Saved By doclastsavedby
Documents:Last Saved Date doclastsaveddate
Documents:Pages pages
Documents:Subject subject
Documents:Title title
General:Name name
General:Extension ext
General:Size size
General:Created Date created
General:Modified Date modified
General:Access Date accesed
General:Attributes attr
General:Location path
General:Rating rating
General:Keywords keywords
Image:Altitude altitude
Image:Aperture apertureval
Image:Aspect Ratio aspectratio
Image:Authors author
Image:Bit Depth picdepth
Image:Camera Make cameramake
Image:Camera Model cameramodel
Image:Contrast contrast
Image:Creation software software
Image:Date Digitized datedigitized
Image:Date Taken datetaken
Image:Digital Zoom digitalzoom
Image:Dimensions picsize
Image:Exposure Bias exposurebias
Image:Exposure Program exposureprogram
Image:Exposure Time exposuretime
Image:Focal Length focallength
Image:Focal Length (35mm) 35mmfocallength
Image:Height picheight
Image:Latitude latitude
Image:Lens make lensmake
Image:Lens model lensmodel
Image:Longitude longitude
Image:Metering Mode meteringmode
Image:Resolution (X) picresx
Image:Resolution (Y) picresy
Image:Saturation saturation
Image:Sharpness sharpness
Image:Subject subject
Image:Subject Distance subjectdistance
Image:Title title
Image:White Balance whitebalance
Image:Width picwidth
Movies:Artists mp3artist
Movies:Aspect Ratio aspectratio
Movies:Audio streams audiocount
Movies:Composers composers
Movies:Conductors conductors
Movies:Dimensions picsize
Movies:Directors director
Movies:Duration duration
Movies:Frame Rate framerate
Movies:Genre mp3genre
Movies:Height picheight
Movies:Publisher publisher
Movies:Release Date releasedate
Movies:Subtitle count subtitlecount
Movies:Title mp3title
Movies:Video Bit Rate datarate
Movies:Video Streams videocount
Movies:Width picwidth
Movies:Year mp3year
Music:Album mp3album
Music:Album Artist mp3albumartist
Music:Artists mp3artist
Music:Audio Bit Rate mp3bitrate
Music:BPM mp3bpm
Music:Composers composers
Music:Conductors conductors
Music:Duration duration
Music:Genre mp3genre
Music:Release date releasedate
Music:Title mp3title
Music:Track mp3track
Music:Year mp3year
Programs:Copyright copyright
Programs:Module Description moddesc
Programs:Module Version modversion
Programs:Product Name prodname
Programs:Product Version prodversion

Once the search with Everything is done, then proceed the search with DOpus Duplicate File Finder tool, from the previous results (if applicable, read the details in NOTES, below).

SCRIPT CONFIGURATION

In the Script Management window, select Everything Dupes and click in the gear icon. (or just run Prefs SCRIPTS=SearchDupesEV.js*)

log level Script Log Logging level to be displayed. OFF to shows critical errors only. DEBUG to shows all the messages. STANDARD to only shows the most relevants. WARNING to shows error conditions that are of consideration.
collection name Results Collection Main collection name to use for results.
delete on startup Results Collection If enabled, all results collections will be deleted after start. It only affects collections created by this command.
create Everything collection Search Options If enabled, 2 sub-collections will be created, one with Everything results, and one with the DOpus dupes search results. If disabled, only one subcollection will be used for duplicates.
Note that `NODODUPES` overrides this value and set it to True
max secs timeout Search Options Max seconds to wait for the Everything search results.
min items to show progress Search Options Minimum number of items used by the command to display progress dialogs. If READFOLDER is used, the dialogs are always displayed.
select for delete Search Options Set to True to show the dialog for dupes selection at the end.
use MD5 Search Options Use MD5 comparison in Opus dupe finder. Only applies when search includes name/size.

NOTES

  • Although DOpus officially supports Everything v1.4, to use this command you need v1.5.0.1370 or higher. You can grab the latest one from here and here are some information on how to make compatible v1.5 compatible with DOpus.
  • If you do not specify a file or folder (or they are not valid), the command will try to use all files in source (or destination if USEDEST is used).
  • If no property is specified for the search, the files size and extension are used.
  • You can override use MD5 config value by specifying the argument MD5. Note that MD5 comparison makes sense only when also size/name are used.
  • Everything results are always stored, if you use NODODUPES argument.
  • If you encounter an endless Everything search, you can cancel the search by clicking on the 'Abort' button in the displayed progress dialog.
    • Avoid such behavior by exclusively using indexed properties, or refine your query by specifying directories to search within.
  • Since v13.5.1, you can search for duplicates in all the columns that support it.
    • Just a heads-up, though: Opus currently only lets you compare using one column (except for Name and Size). But with Everything, you can use multiple columns, so you're getting all the results you need if you set create Everything collection to True.

CHANGELOG

v1.7.0 (Jul 06, 2024) : SearchDupesEV.opusscriptinstall (11.6 KB)

  • Improved recognition of whether Everything is running and if the version in use meets the minimum requirements (thanks to new implementations in DO).
  • Everything can now auto-start to execute the command if everything_autolaunch is set in Preferences/Miscellaneous/Advanced.
    • If auto-started by the command, the same command will close Everything upon completion.
  • Enhanced the way progress dialogs work:
    • Now, the Skip button bypasses listing files and folders directly and skips everything else when reading folders and file properties (since skipping individual files didn't make much sense given the speed).
    • The Cancel button now cancels the command in all cases.
Complete changelog:

v1.6.1 (Jun 23, 2024) : SearchDupesEV.opusscriptinstall (11.5 KB)

  • Added a workaround for when the user doesn't have enough privileges to obtain info using WMI (used to get Everything's path and version).
  • Some corrections for cases when the search in Everything is so fast that the script couldn't detect results properly.

v1.6.0 (Apr 27, 2024) : SearchDupesEV.opusscriptinstall (11.3 KB)

  • Only compatible with Everything v1.5.0.1370 or later. The command now detects the version of Everything being used and does not proceed if it's an older version.
    • Nothing new here, just that now the version is identified due to potential syntax incompatibilities with the EV syntax used by the command in older versions.
  • New argument: NODODUPES, allows for an Everything search without a subsequent search for Opus duplicates.
    • Added due to popular demand, as the command alone generates quite useful queries for Everything.
  • Improved the method indicating when an Everything search is in progress and allowing it to be stopped if it takes too long.
    • Now a progress dialog is shown, along with the elapsed time and the maximum allowed configured in max secs timeout.
  • If the property to use is empty for all used items, now it searches for those whose property value is empty, instead of omitting the property.
  • Other minor changes.

v1.5.1 (Apr 20, 2024) : SearchDupesEV.opusscriptinstall (10.7 KB)

  • Added extra protection when closing Everything results tab while waiting, resulting sometimes in an unexpected error.
  • Now the script log displays as an 'Error' when Opus dupes finder can't be performed due to various reasons. Please note, these aren't errors per se, just a nudge to catch the user's eye on the log.

v1.5.0 (Apr 20, 2024) :

  • Notable Upgrade: Some major improvements in how the command build queries for Everything. Now, we're avoiding duplicate values and following Voidtools' advice to make things run smoother.
  • Removed some arguments: NOUSESIZE, NOUSEEXT, USECREATED, USEMODIFIED, USENAME. Now, if you want to use a property, you have to specify it in PROPERTIES.
    • e.g. PROPERTIES=size,picheight
  • Updated some variable names in the Script Configuration. Added some, removed some. It's worth checking out to stay up-to-date.
  • New argument: MD5. You can override the value of use MD5 in the Script Config to search for duplicates using Opus's MD5 comparison. Use MD5=no to turn it off.
  • Additionally, a progress dialog has been added to the command. Therefore, if you choose to interrupt the reading of folders/properties, you can do so, and the command will continue from where it left off.
  • The command now (hopefully) will end if you close the Everything results tab. Just to prevent things from dragging on forever.

v1.0.2 (Jan 20, 2024) :

  • Removed some extended properties that were not working.
  • Added search by bit depth.
  • Fixed search by rating.
  • Overall code cleanup (should be faster, especially with various files).
  • Minor changes in script configuration dialog.

v1.0.1 (Dec 16, 2023) :

  • Added support for tags in extended information (needs at least Everything v1.5.0.1364a).

v1.0.0 (Dec 12, 2023) : Initial release

15 Likes

Don't know if people are still using this, but last version add support for searching using Tags (needs at least Everything v1.5.0.1364a).

3 Likes

Rating and bit depth (images only) search support has been added in v1.0.2.

1 Like

The version 1364a isn't out yet. Maybe you meant 1963a?

I don't know nothing about that version. But I think v1364a is on prerelease (but the link it is in their forum so search in there)

Here it is:

https://www.voidtools.com/forum/viewtopic.php?p=63174#p63174

1 Like

Thanks! I was referring to

https://www.voidtools.com/forum/viewtopic.php?t=9787

which still isn't updated to that new version.

Many thanks for this! Don't know why this doesn't get more visibility. Would it be possible to search for duplicate images by date taken?

1 Like

@maria thanks!

Yes. Please try with EVDupes NOUSESIZE NOUSEEXT PROPERTIES=datetaken. If you don't have indexed that property in Everything, you could consider searching only in the folders of concern to you, adding IN "folder1" "folder2"...

v1.5.0 (Apr 20, 2024) : v1.5.0 : SearchDupesEV.opusscriptinstall

  • Notable Upgrade: Some major improvements in how the command build queries for Everything. Now, we're avoiding duplicate values and following Voidtools' advice to make things run smoother.
  • Removed some arguments: NOUSESIZE, NOUSEEXT, USECREATED, USEMODIFIED, USENAME. Now, if you want to use a property, you have to specify it in PROPERTIES.
    • e.g. PROPERTIES=size,picheight
  • Updated some variable names in the Script Configuration. Added some, removed some. It's worth checking out to stay up-to-date.
  • New argument: MD5. You can override the value of use MD5 in the Script Config to search for duplicates using Opus's MD5 comparison. Use MD5=no to turn it off.
  • Additionally, a progress dialog has been added to the command. Therefore, if you choose to interrupt the reading of folders/properties, you can do so, and the command will continue from where it left off.
  • The command now (hopefully) will end if you close the Everything results tab. Just to prevent things from dragging on forever.
1 Like

persistent error:

20/04/24 16:19 Everything Dupes: Error at line 331, position 7
20/04/24 16:19 Everything Dupes: Object doesn't support this property or method (0x800a01b6)

p.s.
and how to read results? sometimes i got this with simple EVDupes. no name dupe, no size...
image

and select to delete seems doesn't work for me (no window for dupe selection appears)
image

:warning: IMPORTANT: Needs at least DO v13.5.5 and Everything v.1.5.0.1370 or later

v1.6.0 (Apr 27, 2024) :

  • Only compatible with Everything v1.5.0.1370 or later. The command now detects the version of Everything being used and does not proceed if it's an older version.
    • Nothing new here, just that now the version is identified due to potential syntax incompatibilities with the EV syntax used by the command in older versions.
  • New argument: NODODUPES, allows for an Everything search without a subsequent search for Opus duplicates.
    • Added due to popular demand, as the command alone generates quite useful queries for Everything.
  • Improved the method indicating when an Everything search is in progress and allowing it to be stopped if it takes too long.
    • Now a progress dialog is shown, along with the elapsed time and the maximum allowed configured in max secs timeout.
  • If the property to use is empty for all used items, now it searches for those whose property value is empty, instead of omitting the property.
  • Other minor changes.
3 Likes

When I use the script with a button by invoking it with EVDupes. It always returns error with the following script log "ERROR => Error when trying to get Everything process info! : TypeError: 'FSU.GetMetadata(...).exe.prodversion' is empty or not an object."

The using version of Everything is 1.5.0.1383a (x64), how can I set up to fix this issue?

1 Like

I'm using the same EV version and I can't reproduce this issue.
In fact, I'm a bit intrigued by this case, since unless you've modified the script, I can't see why you shouldn't being able to retrieve the EV version number.
If you're willing to find the cause, I can send you a special version for additional debugging. Just let me know if you're interested by sending me a PM.

v1.6.1 (Jun 23, 2024) :

  • Added a workaround for when the user doesn't have enough privileges to obtain info using WMI (used to get Everything's path and version).
  • Some corrections for cases when the search in Everything is so fast that the script couldn't detect results properly.
1 Like

Great idea for a script but i have an issue!

Installed scripted and added a button with line 'EVDupes'

When I click this button I get the error 'Everything process is not running'

Everything is running as I can use the Everything Search in dopus

If you're using the latest version of the script, the only things that could be causing this issue are:

  • You're using Everything v1.5.0.1369 or below.
  • You dont' have enough account permissions and you changed the name of Everything64.exe

I'll send you a version more easy for you to test and debug.

Also, this shouldn't be a problem anymore with the latest beta of the script (which I'm going to publish later this week)

1 Like

Thankyou! I had 2 versions of everything running, once I uninstalled the 1.4 version of everything it now works with 1.5alpha

:warning: IMPORTANT: Needs at least DOpus v13.7.4

v1.7.0 Beta :

  • Improved recognition of whether Everything is running and if the version in use meets the minimum requirements (thanks to new implementations in DO).
  • Everything can now auto-start to execute the command if everything_autolaunch is set in Preferences/Miscellaneous/Advanced.
    • If auto-started by the command, the same command will close Everything upon completion.
  • Enhanced the way progress dialogs work: (Please report any anomalies with this, as it's the first time I'm implementing it this way, and I'm still figuring out how it works.)
    • Now, the Skip button bypasses listing files and folders directly and skips everything else when reading folders and file properties (since skipping individual files didn't make much sense given the speed).
    • The Cancel button now cancels the command in all cases.

Report any errors directly via PM (following them in this thread gets confusing for me overtime).

2 Likes