/////////////////////////////////////////////////////////////////////////////// function OnInit(data){ //uid added via script wizard (do not change after publishing this script) var uid = "A32023DD-FA2C-4B81-BED6-19529593052B"; //resource center url added via script wizard (required for updating) var url = "http://resource.dopus.com/viewtopic.php?f=35&t=22620"; data.name = "Command.Folder: RenameFolderAddCount"; data.desc = "Add the number of files or subfolders to a folders name."; data.copyright = "tbone"; data.version = "0.3.1"; data.default_enable = false; data.config["extensions"] = ""; data.config["extensions.info"] = "Limit counting to filetypes by specifiying extensions like this: .mp2;.mp3;.ogg"; data.config["pattern"] = "* (%numfiles%)"; data.config["pattern.info"] = "A rename pattern using %numfiles% or %numfolders%."; data.config["deepness"] = "-1"; data.config["deepness.info"] = "-1 disables deepness limitation, 2 means 2 subfolders deep e.g."; var cmd = data.AddCommand(); cmd.name = "RenameFolderAddCount"; cmd.method = "Command_RenameFolderAddCount"; cmd.desc = data.desc; cmd.label = "RenameFolderAddCount"; cmd.template = "EXTENSIONS/K,PATTERN/K,DEEPNESS/K"; } /////////////////////////////////////////////////////////////////////////////// function Command_RenameFolderAddCount(data) { var folders = GetSelectedFolders(data); if (!folders) return false; data.func.command.deselect = false; //getting command script config defaults var pattern = Script.config.pattern; var extensions = Script.config.extensions; var deepness = Script.config.deepness; //testing, getting arguments if (data.func.args.got_arg.extensions) extensions = data.func.args.extensions; if (data.func.args.got_arg.pattern) pattern = data.func.args.pattern; if (data.func.args.got_arg.deepness) deepness = data.func.args.deepness; //DOpus.Output("extensions:"+extensions+"-"+typeof(extensions)); //DOpus.Output("pattern :"+pattern+"-"+typeof(pattern)); //DOpus.Output("deepness :"+deepness+"-"+typeof(deepness)); var exts = new Array(); exts["general"] = new String(extensions).split(";"); var cmds = new Array(); while (!folders.enumerator.atEnd()) { var folder = folders.enumerator.item(); folders.enumerator.moveNext(); var result = { files:{"general":new Array()}, fileCount:0, folderCount:0 }; Crawl(folder.realpath, exts, result, deepness*1); var patternTmp=pattern.replace("%numfiles%",result.files["general"].length); patternTmp=patternTmp.replace("%numfolders%",result.folderCount); var cmd = 'RENAME PATTERN=* FROM="'+folder.realpath+'" TO="'+patternTmp+'"'; CollectGarbage(); data.func.command.RunCommand(cmd); } return true; } /////////////////////////////////////////////////////////////////////////////// function GetSelectedFolders(data){ if (data.func.sourcetab.selected_dirs.count == 0) return null; var dirs = data.func.sourcetab.selected_dirs; return { enumerator:new Enumerator(dirs), count:dirs.count}; } ////////////////////////////////////////////////////////////////////////////// function Crawl( path, extensions, result, deepness, _self){ DOpus.Output("Crawling ["+path+"].."); if (_self==undefined) var _self=false; if (deepness==undefined) var deepness=-1; var deepnessTmp=deepness-1; var recurse = false; if (!_self && deepness==-1) recurse=true; var folderEnum = ReadFolder(path, recurse, true); if (!folderEnum) return; while(!folderEnum.Complete){ var childItem = folderEnum.Next(); var ext = childItem.ext.toLowerCase(); if (childItem.is_dir){ result.folderCount++; if (recurse) continue; if (deepnessTmp==-1) continue; Crawl(childItem.realpath, extensions, result, deepnessTmp, true); continue; } result.fileCount++; for(var key in extensions) for(var i=0;i