Hi,
I'd like to rename a bunch of files such that each word begins with a capital, but I wish to exclude common words such as 'for', 'as', 'a' and also a list of capitalized abbreviations. Does anyone know how to do this?
Thanks!
Hi,
I'd like to rename a bunch of files such that each word begins with a capital, but I wish to exclude common words such as 'for', 'as', 'a' and also a list of capitalized abbreviations. Does anyone know how to do this?
Thanks!
You'll need a rename script.
%appdata%\GPSoftware\Directory Opus\Rename Presets
// https://resource.dopus.com/t/rename-each-word-starting-with-a-capital-but-excluding-specified-words/49637
function OnGetCustomFields(getFieldData) {
getFieldData.fields.alwaysLC = '';
getFieldData.fields.alwaysLC.label = 'Lower Case';
getFieldData.fields.alwaysLC.tip = 'Enter words that are always in lower case';
getFieldData.fields.alwaysUC = '';
getFieldData.fields.alwaysUC.label = 'Upper Case';
getFieldData.fields.alwaysUC.tip = 'Enter words that are always in upper case';
}
function OnGetNewName(getNewNameData) {
var alwaysLC = getNewNameData.custom.alwaysLC;
var alwaysUC = getNewNameData.custom.alwaysUC;
var testLC = ' ' + alwaysLC.toLowerCase().replace(/[^a-z ]/g, '') + ' ';
var testUC = ' ' + alwaysUC.toLowerCase().replace(/[^a-z ]/g, '') + ' ';
var allWords = getNewNameData.newname_stem.split(' ');
for (var i = 0; i < allWords.length; i++) {
var test = ' ' + allWords[i].toLowerCase().replace(/[^a-z]/g, '') + ' ';
if (testLC.indexOf(test) >= 0) {
allWords[i] = allWords[i].toLowerCase();
}
if (testUC.indexOf(test) >= 0) {
allWords[i] = allWords[i].toUpperCase();
}
}
return allWords.join(' ') + getNewNameData.newname_ext;
}
nice, but all non-english characters goes to UPPERcase regardless of the settings
Could you post a list of characters you want to get included?
for example, all russian characters ignored
Действия необходимые для выполнения ‘Умры - Minhadj.com.pdf
Yep, you have a point. That's a few more than I thought
Try 49637b.orp.
// https://resource.dopus.com/t/rename-each-word-starting-with-a-capital-but-excluding-specified-words/49637/6
function OnGetCustomFields(getFieldData) {
getFieldData.fields.alwaysLC = ''; // enter your standard lower case words here
getFieldData.fields.alwaysLC.label = 'Lower Case';
getFieldData.fields.alwaysLC.tip = 'Enter words that are always in lower case';
getFieldData.fields.alwaysUC = ''; // enter your standard upper case words here
getFieldData.fields.alwaysUC.label = 'Upper Case';
getFieldData.fields.alwaysUC.tip = 'Enter words that are always in upper case';
getFieldData.fields.noLetters = '';
getFieldData.fields.noLetters.label = 'No letters';
getFieldData.fields.noLetters.tip = 'Enter all additional characters that are not letters';
}
function OnGetNewName(getNewNameData) {
var noLetters = getNewNameData.custom.noLetters;
var alwaysLC = getNewNameData.custom.alwaysLC;
var alwaysUC = getNewNameData.custom.alwaysUC;
noLetters += '\\.\\(\\)\\[\\]\\{\\}\\$,-;_#~!§%';
var re = new RegExp('[' + noLetters + ']', 'g');
var testLC = ' ' + alwaysLC.toLowerCase().replace(re, '') + ' ';
var testUC = ' ' + alwaysUC.toLowerCase().replace(re, '') + ' ';
var allWords = getNewNameData.newname_stem.split(' ');
for (var i = 0; i < allWords.length; i++) {
var test = ' ' + allWords[i].toLowerCase().replace(re, '') + ' ';
if (testLC.indexOf(test) >= 0) {
allWords[i] = allWords[i].toLowerCase();
}
if (testUC.indexOf(test) >= 0) {
allWords[i] = allWords[i].toUpperCase();
}
}
return allWords.join(' ') + getNewNameData.newname_ext;
}
works great! thanx.
what is no letters
for?
No Letters applies to all characters whose case cannot be changed and are not already included in the script (noLetters +=...
).
For example, I forgot the @
symbol .