//modded to add totalcount to filebasename function OnInit(data){ data.name = "Command.File: RenameBaseNameContinueNumbering"; data.desc = ""; data.copyright = ""; data.version = "1.1"; data.default_enable = false; var cmd = data.AddCommand(); cmd.name = "RenameBaseNameContinueNumbering"; cmd.method = "DoRenameBaseNameContinueNumbering"; cmd.desc = data.desc; cmd.label = "RenameBaseNameContinueNumbering"; } ////////////////////////////////////////////////////////////////////////////// function DoRenameBaseNameContinueNumbering(data){ if (!data.func.sourcetab.selected.count) return; //DOpus.ClearOutput(); var thing = new RenameBaseNameContinueNumbering(data); thing.rename(); } ////////////////////////////////////////////////////////////////////////////// function RenameBaseNameContinueNumbering( data){ this.files = data.func.sourcetab.selected; this.numberedFileFound = false; this.numberedFileBaseName = ''; this.firstFileBaseName = ''; this.nextFileNum = 1; ////////////////////////////////////////////////////////////////////////// this.init = function(){ var filesEnum = new Enumerator(this.files); var number = 0; var first = true; while (!filesEnum.atEnd() ) { var item = filesEnum.item(); filesEnum.moveNext(); var num = this.numberFromFilename(item.name_stem); if (first){ first = false; this.firstFileBaseName = item.name_stem; } if (num && !this.numberedFileFound){ this.numberedFileFound = true; this.numberedFileBaseName = item.name_stem; } if ((num+1) > this.nextFileNum) this.nextFileNum = num+1; } return number; } ////////////////////////////////////////////////////////////////////////// this.numberFromFilename = function(fileName){ var match = fileName.match(/[0-9]{1,}/); if (match) return parseInt(match[0]); return null; }////////////////////////////////////////////////////////////////////////// this.getBaseName = function(basename){ var dlg = DOpus.Dlg; dlg.window = DOpus.Listers(0) dlg.message = "Enter new base name."; dlg.title = "Rename" dlg.buttons = "Ok|Cancel" dlg.max = 128; dlg['default'] = basename; if (dlg.Show()) return dlg.input; return null; } ////////////////////////////////////////////////////////////////////////// this.rename = function(){ var num = this.nextFileNum; var filesEnum = new Enumerator(this.files); var filesCount = this.files.count; var basename = this.firstFileBaseName; if (this.numberedFileFound) basename = this.numberedFileBaseName; basename = basename.replace(new RegExp("(.*?)([0-9, ,\(,\)]{1,}$)"),'$1'); if (!this.numberedFileFound) basename = this.getBaseName(basename); if (!basename) return; while (!filesEnum.atEnd() ) { var item = filesEnum.item(); filesEnum.moveNext(); if (!this.numberFromFilename(item.name_stem)){ var newName = basename+' '+num+' of '+filesCount+item.ext; dout(padRight(item.name,30,' ') + " -> " + newName); var cmd = 'RENAME FROM "'+item.realpath+'" TO "'+newName+'"'; DOpus.NewCommand.RunCommand(cmd); num++; } } } ////////////////////////////////////////////////////////////////////////// this.init(); } ////////////////////////////////////////////////////////////////////////////// function dout(text){ DOpus.Output(text); } ////////////////////////////////////////////////////////////////////////////// function padRight(text,len,chr){ while(text.length < len) text=text+chr; return text; }