function OnInit(initData) { initData.name = 'UpdateEverythingFolderSize'; initData.version = '2023-08-21'; initData.copyright = ''; initData.url = 'https://resource.dopus.com/t/everythingfoldersize-use-everything-to-calculate-folder-sizes/44281'; initData.desc = ''; initData.default_enable = true; initData.min_version = '12.0'; } // var log = true; var log = false; var cmd = DOpus.Create().Command(); var stt = DOpus.Create().StringTools(); var fsu = DOpus.FSUtil(); var wsh = new ActiveXObject('WScript.Shell'); var exeES = fsu.Resolve('/programfiles\\Everything\\es.exe'); // Check "Index folder size" in Tools-Options-Indexes // var exeES = fsu.Resolve('/programfiles\\Everything 1.5a\\es.exe'); // Everything-1.5a.ini needs to contain this line: alpha_instance=0 if (fsu.Exists(exeES)) { // if (log) DOpus.Output('"' + exeES + '" found!'); } else { DOpus.Output('"' + exeES + '" not found!'); } function OnOpenTab(openTabData) { if (openTabData.tab.path == undefined) { if (log) DOpus.Output('openTabData.tab.path == undefined'); return; } cmd.SetSourceTab(openTabData.tab); if (!cmd.IsSet('Set COLUMNSTOGGLE=scp:EverythingFolderSize/EverythingFolderSize')) { if (log) DOpus.Output('Column "EverythingFolderSize" not in this file display - nothing to do!'); return; } if (!fsu.Exists(exeES)) { if (log) DOpus.Output('"' + exeES + '" MIA!'); return; } if (log) DOpus.Output('OnOpenTab: Calling QueryEverything...'); QueryEverything(openTabData.tab.path); cmd.RunCommand('Go REFRESH'); // seems to be needed here } function OnBeforeFolderChange(beforeFolderChangeData) { if (beforeFolderChangeData.tab.path == undefined) { if (log) DOpus.Output('beforeFolderChangeData.tab.path == undefined'); return; } if (beforeFolderChangeData.path == undefined) { if (log) DOpus.Output('beforeFolderChangeData.path == undefined'); return; } if (beforeFolderChangeData.path.drive == 0) { if (log) DOpus.Output('beforeFolderChangeData.path.drive == 0'); return; } cmd.SetSourceTab(beforeFolderChangeData.tab); if (!cmd.IsSet('Set COLUMNSTOGGLE=scp:EverythingFolderSize/EverythingFolderSize')) { if (log) DOpus.Output('Column "EverythingFolderSize" not in this file display - nothing to do!'); return; } if (!fsu.Exists(exeES)) { if (log) DOpus.Output('"' + exeES + '" MIA!'); return; } if (log) DOpus.Output('OnBeforeFolderChange: Calling QueryEverything...'); QueryEverything(beforeFolderChangeData.path); } function QueryEverything(path) { var exportFile = fsu.GetTempFilePath(); var cmdLine = '"' + exeES + '"' + ' -size' + ' -no-header' + ' -export-csv "' + exportFile + '"' + ' -parent "' + path + '"' + ' /ad'; if (log) DOpus.Output(cmdLine); wsh.Run(cmdLine, 0, true); var vec = DOpus.Create().Vector(stt.Decode(fsu.GetItem(exportFile).Open().Read(), 'utf8').split('\r\n')); var re = /(\d+),(.*)/; for (var e = new Enumerator(vec); !e.atEnd(); e.moveNext()) { var line = e.item().match(re); if (line == null) continue; if (line.length != 3) continue; var size = line[1]; var dirVar = 'EFS' + line[2]; DOpus.vars.Set(dirVar, size); if (log) DOpus.Output(dirVar + '\t' + size); // useful, if communicaton with Everything is faulty } }