我已经在网上找到了这个脚本,这几乎是我在寻找的脚本,但是需要对其进行修改,我似乎无法使其正常工作。
if (selectedFolder) {
myDocument = app.documents.add();
var firstImageLayer = true;
var newLayer ;
var thisPlacedItem;
// create document list from files in selected folder
var imageList = selectedFolder.getFiles();
for (var i = 0; i < imageList.length; i++) {
// open each document in file list
if (imageList[i] instanceof File) {
// get the file name
var fName = imageList[i].name.toLowerCase();
// check for supported file formats
//if( (fName.indexOf(".eps") == -1) ) {
if( (fName.indexOf(".tga") == -1) && (fName.indexOf(".png") == -1)) {
// skip unsupported formats
continue;
} else {
if( firstImageLayer ) {
newLayer = myDocument.layers[0];
firstImageLayer = false;
} else {
newLayer = myDocument.layers.add();
}
// Give the layer the name of the image file
newLayer.name = fName.substring(0, fName.indexOf(".") );
// Place the image on the artboard
thisPlacedItem = newLayer.placedItems.add()
thisPlacedItem.file = imageList[i];
switch( placement9pointAlignment ) {
default :
break;
case "ul" :
thisPlacedItem.top = myDocument.height;
thisPlacedItem.left = 0;
break;
case "ml" :
thisPlacedItem.top = myDocument.height / 2 + thisPlacedItem.height / 2;
thisPlacedItem.left = 0;
break;
case "ll" :
thisPlacedItem.top = thisPlacedItem.height;
thisPlacedItem.left = 0;
break;
case "ur" :
thisPlacedItem.top = myDocument.height;
thisPlacedItem.left = myDocument.width - thisPlacedItem.width;
break;
case "mr" :
thisPlacedItem.top = myDocument.height / 2 + thisPlacedItem.height / 2;
thisPlacedItem.left = myDocument.width - thisPlacedItem.width;
break;
case "lr" :
thisPlacedItem.top = thisPlacedItem.height;
thisPlacedItem.left = myDocument.width - thisPlacedItem.width;
break;
case "um" :
thisPlacedItem.top = myDocument.height;
thisPlacedItem.left = myDocument.width / 2 - thisPlacedItem.width / 2;
break;
case "mm" :
thisPlacedItem.top = myDocument.height / 2 + thisPlacedItem.height / 2;
thisPlacedItem.left = myDocument.width / 2 - thisPlacedItem.width / 2;
break;
case "lm" :
thisPlacedItem.top = thisPlacedItem.height;
thisPlacedItem.left = myDocument.width / 2 - thisPlacedItem.width / 2;
break;
}
}
}
}
if( firstImageLayer ) {
// alert("The action has been cancelled.");
// display error message if no supported documents were found in the designated folder
alert("Sorry, but the designated folder does not contain any recognized image formats.\n\nPlease choose another folder.");
myDocument.close();
importFolderAsLayers(getFolder());
}
} else {
// alert("The action has been cancelled.");
// display error message if no supported documents were found in the designated folder
alert("Rerun the script and choose a folder with images.");
//importFolderAsLayers(getFolder());
}
}
//Start the script off
importFolderAsLayers( getFolder() );
我希望能够选择一个文件夹,并使其仅导入.tga或.png文件。如果还有其他文件格式,我希望它忽略它们。
此脚本的问题在于它是通过文件名而不是扩展名搜索的。 通常这可以正常工作,但是我经常收到.tga文件以及一个名为image_01.tga.jpeg的jpeg副本
这是一个问题,因为现在当我使用脚本时,它会导入tga和jpeg!
有人知道我该如何改编该脚本,以便按扩展名对其进行专门搜索?
答案 0 :(得分:0)
您在读取的行中使用的getFiles()
方法;
var imageList = selectedFolder.getFiles();
接受mask
参数-本质上是RegExp模式。
如果将该行更改为;
var imageList = selectedFolder.getFiles(/\.(tga|png)$/i);
这将确保分配给imageList
变量的文件列表仅是以.tga
,.TGA
,.png
或.PNG
结尾的文件
然后,您不必在for
循环中对文件类型进行任何过滤。