function OnInit(data){ data.name = "Command.Folder: RenameFolderAddCount"; data.desc = "Add the number of files in a folder to its name."; data.copyright = "DOS - Directory Opus Society 2o14. o)"; data.version = "0.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 including %numfiles%, like '* (%numfiles%)'."; 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/O/K,PATTERN/O/K,DEEPNESS/O/K"; } /////////////////////////////////////////////////////////////////////////////// function Command_RenameFolderAddCount(data) { var folders = GetSelectedFolders(data); if (!folders) return 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 = new String(data.func.args.extensions); if (extensions=="true") extensions=""; //some kind of fix if (data.func.args.got_arg.pattern) pattern = new String(data.func.args.pattern); if (pattern=="true") pattern=""; if (data.func.args.got_arg.deepness) deepness = data.func.args.deepness; if (deepness=="true") deepness=""; //DOpus.Output("extensions:"+extensions+"-"); //DOpus.Output("pattern :"+pattern+"-"); //DOpus.Output("deepness :"+deepness+"-"); var exts = new Array(); exts["general"] = new String(extensions).split(";"); while (!folders.enumerator.atEnd() ) { var folder = folders.enumerator.item(); folders.enumerator.moveNext(); var result = { files:{"general":new Array()} }; Crawl(folder, exts, result, deepness*1); numFiles = result.files["general"].length; pattern=pattern.replace("%numfiles%",numFiles); var cmd = 'RENAME PATTERN=* FROM="'+folder.realpath+'" TO="'+pattern+'"'; DOpus.NewCommand.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){ if (deepness==undefined) var deepness=-1; if (deepness!==-1 && deepness>0) deepness--; //DOpus.Output("Crawling [" + path +"].."); var folderEnum = ReadFolder(path, false, true); if (!folderEnum) return; while(!folderEnum.Complete){ var childItem = folderEnum.Next var ext = childItem.ext.toLowerCase(); if (childItem.is_dir && (deepness===-1 || deepness>0)) { Crawl(childItem.realpath, extensions, result, deepness); continue; } for(var key in extensions) for(var i=0;i