Skip to main content
Inspiring
February 20, 2016
Answered

Rename layers - unsaved file name + suffix

  • February 20, 2016
  • 1 reply
  • 809 views

Hi

I have jsx script which can rename layers with current file name + suffix. Script select layer by names. But, this work if file is saved to disk.

Need to modify script to use name even if file is not previously save to disk, like freshly opened pdf file?

var doc = app.activeDocument;

doc.activeLayer = doc.artLayers.getByName("Layer 2");

app.activeDocument.activeLayer.name = decodeURI(app.activeDocument.name).match(/(.*)(\.[^\.]+)/)[1] + "_Zadnjica";

doc.activeLayer = doc.artLayers.getByName("Layer 3");

app.activeDocument.activeLayer.name = decodeURI(app.activeDocument.name).match(/(.*)(\.[^\.]+)/)[1] + "_Hrbat";

doc.activeLayer = doc.artLayers.getByName("Layer 4");

app.activeDocument.activeLayer.name = decodeURI(app.activeDocument.name).match(/(.*)(\.[^\.]+)/)[1] + "_Prednjica";

This topic has been closed for replies.
Correct answer pixxxelschubser

script is ok but with changing all "namePart" to doc.name

tnx


kajzica schrieb:

… but with changing all "namePart" to doc.name

tnx

I thought, this is not what you want? Or?

In this case you can remove line #03 and replace namePart with docName.

Than is this the code you need:

var doc = app.activeDocument;

var docName = doc.name;

// you have to check if the following layers really exists !!!

doc.activeLayer = doc.artLayers.getByName("Layer 2");

app.activeDocument.activeLayer.name = docName + "_Zadnjica";

doc.activeLayer = doc.artLayers.getByName("Layer 3");

app.activeDocument.activeLayer.name = docName + "_Hrbat";

doc.activeLayer = doc.artLayers.getByName("Layer 4");

app.activeDocument.activeLayer.name = docName + "_Prednjica";

// additional you need as save function

1 reply

pixxxelschubser
Community Expert
Community Expert
February 20, 2016

This is not really the best way. But you can do something like that with your existing code:

var doc = app.activeDocument;

var yourWishNamePart2Save = "NewSaveName";

// you have to check if the following layers really exists !!!

doc.activeLayer = doc.artLayers.getByName("Layer 2");

app.activeDocument.activeLayer.name = yourWishNamePart2Save + "_Zadnjica";

doc.activeLayer = doc.artLayers.getByName("Layer 3");

app.activeDocument.activeLayer.name = yourWishNamePart2Save + "_Hrbat";

doc.activeLayer = doc.artLayers.getByName("Layer 4");

app.activeDocument.activeLayer.name = yourWishNamePart2Save + "_Prednjica";

// additional you need as save function with yourWishNamePart2Save + extension

Have fun

kajzicaAuthor
Inspiring
February 20, 2016

but this wont get current name from image window

pixxxelschubser
Community Expert
Community Expert
February 20, 2016

Ok.

Try this one

var doc = app.activeDocument;

var docName = doc.name;

var namePart = decodeURI(docName).match(/(.*)(\.[^\.]+)/)[1];

// you have to check if the following layers really exists !!!

doc.activeLayer = doc.artLayers.getByName("Layer 2");

app.activeDocument.activeLayer.name = namePart + "_Zadnjica";

doc.activeLayer = doc.artLayers.getByName("Layer 3");

app.activeDocument.activeLayer.name = namePart + "_Hrbat";

doc.activeLayer = doc.artLayers.getByName("Layer 4");

app.activeDocument.activeLayer.name = namePart + "_Prednjica";

// additional you need a save function

: