Hi all. This is my first DOpus Add-In. It was born out of this thread.
This script creates a new column called AvgFileSize. It displays the average file size within a folder. It looks like this:
As you can see, it simply divides the folder size by the number of files it contains.
Download this file:
AvgFileSize.osp (1.03 KB)
Once downloaded, drag and drop the file into your DOpus Preferences dialog here:
Add the column to any lister like so:
I gave the script an option to specify a filename filter. Only files that match the filter will be counted in the column.
It defaults to * to count all files. You could change it to *.jpg to count JPEG files only.
The script code is reproduced here so that it can be searched through the forum.
' AvgFileSize Column ' © 2016 Waffles ' ' This is a script for Directory Opus 11. It creates a new column called "AvgFileSize". The column displays the average ' file size within a folder. It only works on folders, not files. ' ' The script includes an option to allow the user to specify a filename filter. Only files that match the filter will be ' counted. It defaults to "*" to count all files. ' ' This script was created with the gracious help of Leo Davidson. Option Explicit Function OnInit(initData) 'Called by DOpus to initialize the script. With initData .name = "AvgFileSize" .desc = "Adds a script column that shows the average file size within a folder." .copyright = "© 2016 Waffles" .version = "1.0" .default_enable = True .min_version = "11.17" .config.Filter = "*" .config_desc = DOpus.NewMap("Filter", "Standard DOpus filter to apply to the files counted by the AvgFileSize column.") End With With initData.AddColumn .name = "AvgFileSize" .header = "AvgFileSize" .label = "AvgFileSize" .type = "size" .justify = "right" .method = "OnAvgFileSize" End With End Function Function OnAvgFileSize(scriptColData) 'Called by DOpus to get the value of a column for an item. Dim lFileCount, FileSize, Wild, FolderEnum, FolderItem 'Initialize tallies and get custom filter. lFileCount = 0 Set FileSize = DOpus.FSUtil.NewFileSize Set Wild = DOpus.FSUtil.NewWild(Script.config.Filter) 'If item is a folder, sum its files that match the filter recursively. If scriptColData.item.is_dir Then Set FolderEnum = DOpus.FSUtil.ReadDir(scriptColData.item, True) 'True=Recursive Do Until FolderEnum.complete Set FolderItem = FolderEnum.next If Not FolderItem.is_dir And Wild.Match(FolderItem.name) Then 'apply filter FileSize.Add(FolderItem.size) lFileCount = lFileCount + 1 End If Loop If lFileCount = 0 Then lFileCount = 1 'avoid division by zero scriptColData.value = FileSize / lFileCount End if End Function