Copy link to clipboard
Copied
I need to find a script that will rename the imported artwork files.
I have many artwork files with different names, that I would like to rename to a project number, and then relink them into the document.
I would first "package" the document to get the files into one common folder. Once the files are in one link folder, I would like to rename and link them to that project.
The script must allow me to assign the base file name.
Hi Bill,
Here is the script. It renames linked image files on page by page basis. At start a dialog pops up asking you to enter a base name, then a confirmation dialog appears warning that all links in the current document are going to be renamed, and if you press Ok all links located on pages (not on master pages or pasteboard) are renamed like so :
WWAAU_001_a.jpg, WWAAU_001_b.jpg, WWAAU_001_c.jpg and so on.
Where: WWAAU — base name
001 —the number of the page where the image is placed
a, b, c …
...Copy link to clipboard
Copied
here is working script which can deal with MULTIPLE instances same link, also skip files on master pages...
var myDoc = app.activeDocument;
var myAllLinks = myDoc.allGraphics;
var myMultipleLinks = new Array();
var myMultipleLinksName = new Array();
var myLinksCounter = 1;
var myPrepend = prompt("Example: thebook_08765", "Job description", "Please enter job description");
if (!myPrepend) exit();
myPrepend += "_str_";
var response = confirm("Warning: You are about to rename all images linked to the foremost Indesign Document - proceed? Keep in mind - it is not reversible!", false, "Rename Links Script");
if ( response == true )
{
WriteToFile("\r--------------------- Script started -- " + GetDate() + " ---------------------\n\n");
for ( k = 0; k < myAllLinks.length; k++ )
{
if(myAllLinks
myAllLinks.splice(k,1);
k--;
continue;
}
var myLinkName = myAllLinks
}
crearLabels();
var myPages = myDoc.pages;
// Pages
for ( p = 0; p < myPages.length; p++ )
{
var myPageNumber = pad000(myPages
.name);
var myLinks = myPages
.allGraphics;
var myASCII = 97;
for ( k = myLinks.length - 1; k >= 0; k-- )
{
var myLink = myLinks
if (myLink.extractLabel("relinked") != "yes") {
var myOldLinkName = myLink.name;
var myLinkUsage = LinkUsage( myLink );
var myExtension = myOldLinkName.substr(myOldLinkName.lastIndexOf( "." ));
if (LinkUsage(myLink) == 1)
{
var myNewLinkName = myPrepend + myPageNumber + String.fromCharCode( myASCII ) + myExtension;
var myOldImageHDfile = new File( myLink.filePath );
var myRenameResult = myOldImageHDfile.rename( myNewLinkName );
if (myRenameResult) {
myLink.insertLabel("relinked", "yes");
myLink.relink( myOldImageHDfile );
try {
myLink = myLink.update();
}
catch(err) {}
myASCII++;
WriteToFile(((myLinksCounter < 10) ? (" " + myLinksCounter) : myLinksCounter) + " - " + myOldImageHDfile.name + " --> " + myNewLinkName + "\n");
myLinksCounter++;
}
else {
if (new File(myOldImageHDfile.parent + "/" + myNewLinkName + myExtension).exists) {
WriteToFile("CAN'T RENAME LINK -- " + myOldImageHDfile.name + " to " + myNewLinkName + " because the file already exists\n");
}
else {
WriteToFile("CAN'T RENAME LINK -- " + myOldImageHDfile.name + "\n");
}
}
}
else {
if (!IsObjInArray(myLink, myMultipleLinks)) {
myMultipleLinks.push(myLink);
var myNewLinkName2 = myPrepend + myPageNumber + String.fromCharCode( myASCII ) + myExtension;
myMultipleLinksName.push(myNewLinkName2);
myASCII++;
}
}
}
}
}
var myMasterSpreads = myDoc.masterSpreads;
// Master spreads
for ( m = 0; m < myMasterSpreads.length; m++ )
{
var myMastSpr = myMasterSpreads
var myPageNumber = myMastSpr.name;
var myPrefix = myMastSpr.namePrefix;
var myLinks = myMastSpr.allGraphics;
var myASCII = 97;
for ( n = myLinks.length - 1; n >= 0; n-- )
{
var myLink = myLinks
if (myLink.extractLabel("relinked") != "yes") {
var myOldLinkName = myLink.name;
var myExtension = myOldLinkName.substr(myOldLinkName.lastIndexOf( "." ));
if (LinkUsage(myLink) == 1)
{
var myLinkLetter = (myLinks.length == 1) ? "" : String.fromCharCode( myASCII );
var myNewLinkName = myPrepend + '_master_' + myPrefix + myLinkLetter + myExtension;
var myOldImageHDfile = new File( myLink.filePath );
var myRenameResult = myOldImageHDfile.rename( myNewLinkName );
if (myRenameResult) {
myLink.insertLabel("relinked", "yes");
myLink.relink( myOldImageHDfile );
try {
myLink.update();
}
catch(err) {}
myASCII++;
WriteToFile(((myLinksCounter < 10) ? (" " + myLinksCounter) : myLinksCounter) + " - " + myOldImageHDfile.name + " --> " + myNewLinkName + "\n");
myLinksCounter++;
}
else {
if (new File(myOldImageHDfile.parent + "/" + myNewLinkName + myExtension).exists) {
WriteToFile("CAN'T RENAME LINK -- " + myOldImageHDfile.name + " to " + myNewLinkName + " because the file already exists\n");
}
else {
WriteToFile("CAN'T RENAME LINK -- " + myOldImageHDfile.name + "\n");
}
}
}
else
{
if (!IsObjInArray(myLink, myMultipleLinks)) {
myMultipleLinks.push(myLink);
var myLinkLetter2 = (myLinks.length == 1) ? "" : String.fromCharCode( myASCII );
var myNewLinkName2 = myPrepend + '_master_' + myPrefix + myLinkLetter2 + myExtension;
myMultipleLinksName.push(myNewLinkName2);
myASCII++;
}
}
}
}
}
// Multiple images
if (myMultipleLinks.length > 0) {
for ( a = myMultipleLinks.length - 1; a >= 0; a-- )
{
processMultiUsedLinks(myMultipleLinks, myMultipleLinksName);
}
}
WriteToFile("\r--------------------- Script finished -- " + GetDate() + " ---------------------\r\r");
if (myLinksCounter == 0) {
alert("No links have been renamed", "Rename Links Script");
}
if (myLinksCounter == 1) {
alert("One link has been renamed", "Rename Links Script");
}
else if (myLinksCounter > 1) {
alert(myLinksCounter + " links have been renamed", "Rename Links Script");
}
}
//--------------------------------------------- Functions ------------------------------------------------
// Check how many times the link was placed
function LinkUsage(myLink) {
var myLinksNumber = 0;
for (var c = 0; c < myDoc.links.length; c++) {
if (myLink.filePath == myDoc.links
myLinksNumber += 1;
}
}
return myLinksNumber;
}
//--------------------------------------------------------------------------------------------------------------
// Relink the links placed more than once
function processMultiUsedLinks(myLink, naziv) {
var myExtension = "";
var myMultiUsedLink = new Array();
var myAllLinks = myDoc.links;
for (var d = 0; d < myAllLinks.length; d++) {
if (myAllLinks
myMultiUsedLink.push(myAllLinks
}
}
try {
myLink.show();
}
catch(err) {}
var myNewLinkName = naziv; //prompt ("Enter a name for this image", GetFileNameOnly(myLink.name), "This image is placed " + myMultiUsedLink .length + " times");
if (myNewLinkName) {
if ( myNewLinkName + myExtension != myLink.name ) {
var myOldImageHDfile = new File( myLink.filePath );
var myRenameResult = myOldImageHDfile.rename( myNewLinkName + myExtension );
if (myRenameResult) {
myLink.insertLabel("relinked", "yes");
myLink.relink( myOldImageHDfile );
try {
myLink = myLink.update();
}
catch(err) {}
WriteToFile(((myLinksCounter < 10) ? (" " + myLinksCounter) : myLinksCounter) + " - " + myOldImageHDfile.name + " --> " + myNewLinkName + "\n");
myLinksCounter++;
for (f = myMultiUsedLink.length-1; f >= 0 ; f--)
{
var myCurrLink = myMultiUsedLink
if ( myNewLinkName + myExtension != myCurrLink.name ) {
myCurrLink.insertLabel("relinked", "yes");
myCurrLink.relink( myOldImageHDfile );
try {
myCurrLink = myLink.update();
}
catch(err) {}
}
}
}
else {
if (new File(myOldImageHDfile.parent + "/" + myNewLinkName + myExtension).exists) {
$.writeln("CAN'T RENAME LINK -- " + myOldImageHDfile.name + " to " + myNewLinkName + myExtension + " because the file already exists\n");
}
else {
$.writeln("CAN'T RENAME LINK -- " + myOldImageHDfile.name + "\n");
}
}
}
}
UpdateAllOutdatedLinks();
}
//--------------------------------------------------------------------------------------------------------------
// Clear labels in case this script has been already run on the current document
function crearLabels() {
for (var f = 0; f < myDoc.links.length; f++) {
if (myDoc.links
myDoc.links
}
}
}
//--------------------------------------------------------------------------------------------------------------
function UpdateAllOutdatedLinks() {
for(var myCounter = myDoc.links.length-1; myCounter >= 0; myCounter--){
var myLink = myDoc.links[myCounter];
if (myLink.status == LinkStatus.linkOutOfDate){
myLink.update();
}
}
}
//--------------------------------------------------------------------------------------------------------------
function pad000(myNumber) {
if (myNumber >= 1 && myNumber <= 9) {
x = "0" + "0" + myNumber;
} else if (myNumber >= 10 && myNumber <= 99) {
x = "0" + myNumber;
} else if (myNumber >= 100 && myNumber <= 999) {
x = myNumber;
}
return x;
}
//--------------------------------------------------------------------------------------------------------------
function GetFileNameOnly(myFileName) {
var myString = "";
var myResult = myFileName.lastIndexOf(".");
if (myResult == -1) {
myString = myFileName;
}
else {
myString = myFileName.substr(0, myResult);
}
return myString;
}
//--------------------------------------------------------------------------------------------------------------
function IsObjInArray(myObj, myArray) {
for (x in myArray) {
if (myObj.filePath == myArray
return true;
}
}
return false;
}
//--------------------------------------------------------------------------------------------------------------
function WriteToFile(myText) {
myFile = new File("~/Desktop/Rename Links Script.txt");
if ( myFile.exists ) {
myFile.open("e");
myFile.seek(0, 2);
}
else {
myFile.open("w");
}
myFile.write(myText);
myFile.close();
}
//--------------------------------------------------------------------------------------------------------------
function GetDate() {
var myDate = new Date();
if ((myDate.getYear() - 100) < 10) {
var myYear = "0" + new String((myDate.getYear() - 100));
} else {
var myYear = new String ((myDate.getYear() - 100));
}
var myDateString = (myDate.getMonth() + 1) + "/" + myDate.getDate() + "/" + myYear + " " + myDate.getHours() + ":" + myDate.getMinutes() + ":" + myDate.getSeconds();
return myDateString;
}
//--------------------------------------------------------------------------------------------------------------
Copy link to clipboard
Copied
Hi kajzica.
This is a great script. I've been trying to find something as powerful as this. I'm not a scriptor.
There are a couple specifics that I"m looking for my needs.
I was curious if you might know how to modify this so that it would do certain file types?
I am trying to name all .tif files in sequence. And, all .psd files in sequence, etc.
I also don't need the naming to correspond to page number. In essence what I'm looking for naming is something like the following:
image001.jpg
image002.jpg
image003.jpg
image001.tif
image002.tif
image003.tif
image001.psd
image002.psd
image003.psd
Thanks in advance. Please let me know if this is at all possible.
Also, let me know if there's anything else you might need from me.
Thanks and cheers!
Copy link to clipboard
Copied
wow this looks complex, thanks so much for your help everyone
sorry for the multiple threads, I was concerned that the old threads I'd posted in were flagged as 'answered' so I made my own, but I didn't mean to swamp the forum, apologies.
Find more inspiration, events, and resources on the new Adobe Community
Explore Now