Photoshop脚本删除所有文本层

Photoshop script remove all text layer

我有太多文件要处理,所以我尝试在 Windows 7 pro x64 上使用 Adob​​e Photoshop CC 2014 中的 *.jsx 脚本文件删除所有文本层。

我在网上找到这部分代码,当我编辑时出现错误。

// test 1

#target photoshop

var myLayers = app.activeDocument.layers.everyItem().getElements();
    for(var i=myLayers.length-1;i=0;i--){
        if(myLayers[i].LayerKind.TEXT){
        myLayers[i].remove();
        continue;
    }
}

// test 2 

var theLayers = collectEmptyGroups(app.activeDocument, []);  
//alert (theLayers.join("\n"));  
for (var x = 0; x < theLayers.length; x++) {  
  try {theLayers[x].remove()}  
  catch (e) {}};  
////// function collect all layers //////  
function collectEmptyGroups (theParent, allLayers) {  
  if (!allLayers) {var allLayers = new Array}  
  else {};  
  var theNumber = theParent.layers.length - 1;  
  for (var m = theNumber; m >= 0;m--) {  
  var theLayer = theParent.layers[m];  
// apply the function to layersets;  
  if (theLayer.typename == LayerKind.TEXT) {  
// allLayers.push(theLayer)  
  }  
  else {  
  allLayers = (collectEmptyGroups(theLayer, allLayers))  
// this line includes the empty layer groups;  
if (theLayer.layers.length == 0) {allLayers.push(theLayer)}  
  }  
  };  
  return allLayers  
  };

你能帮帮我吗

您发布的代码看起来不太干净,很难说出哪里出了问题。

这里有一个非常简单的方法(在 Win 10 x64 上用 Photoshop CS6 测试过):

function findLayersText (layers) {
    for (var i = 0, len = layers.length; i < len; i++) {
        if (layers[i].kind == "LayerKind.TEXT") {
            layers[i].remove();
            len--;
        }
    }
}

//check all art layers then
//check if there are any inner layer sets
function browseLayerSets (sets) {
    for (var i = 0, len = sets.length; i < len; i++) {
        findLayersText(sets[i].artLayers);

        if(sets[i].layerSets.length > 0){
            browseLayerSets(sets[i].layerSets);
        }
    }
}

//check all root art layers for text layer
findLayersText(app.activeDocument.artLayers);
//browse all root layer sets (if any)
browseLayerSets(app.activeDocument.layerSets);