需要ExtendScript才能在不知道完整文件名的情况下打开文件

时间:2015-01-19 03:28:50

标签: javascript photoshop extendscript

ExtendScript的新功能,并尝试完成工作的自动化项目。

我有一堆图像,我通过脚本在photoshop中组合,需要根据初始图像打开图像配对。我知道我的配对文件的名称可以预测到最后一个字符,此时它将是任何大写字母A-Z。

例如:

CH-14B1-SP-01-A可以与CH-14B1-SP-PV-01-A配对,但也可以与CH-14B1-SP-PV-01-B配对。每个配对文件都有一个A-D复制,我们选择最好配对。

我有一个脚本工作,需要用户输入来决定要查找的复制。我想自动化这个。我的代码如下所示:

// ask user input for PV replicate letter
var repLetter =prompt("Which PV replicate would you like to use? (A.. B.. C.. etc.)");

    // get the info out of the source doc
var fileName = srcDoc.name;
var docName = fileName.substring(0,fileName.length -4);
var filePath = srcDoc.path.toString();
var fileExt = fileName.substring(fileName.length -4, fileName.length);

var nameCheck = fileName.substring(0,fileName.indexOf("CH-14B1-SPI-"));

if (nameCheck <1)
{
   var fileNum = fileName.substring(12,fileName.length -5) + repLetter;
   // no underscore so we need to open it's namesake
   // alert(nameCheck)
   var filePair = filePath + "/PV/" + "CH-14B1-SPI-PV-" + fileNum + fileExt;
   openThisFile(filePair)

有没有办法让var repLetter只接受任何值?

这样的东西
var fileNum = fileName.substring(12,fileName.length -5) + [a-z];

我尝试了以上希望它能做到这一点(再次对此非常新)并且我被告知“a”未定义。

1 个答案:

答案 0 :(得分:1)

你的错误在于

中的错误语法
var fileNum = fileName.substring(12,fileName.length -5) + [a-z];

...它只是错误的语法,你好像把GREP混合到了JS中。发出错误是因为[...]表示一个数组, 有效“添加”到字符串,但表达式a-z(“a减去{{ 1}}“)需要名为 za的变量。我想你在这里只是想要某种通配符。

根据当前文件名读取候选文件列表,以解决整个问题。这有点难以在本地测试,因为它需要大量的虚拟文件(我并不完全确定我理解你的程序)。但是,以下的一般想法应该是清楚的。

不是提示“任何”字母,而是显示可用选项更加用户友好。我不确定你是如何获得候选人名单的,所以我会让你自己填写。您需要调整此z来电;目前,它会从getFiles读取文件,并在其名称后面加filePath来获取以*开头的所有内容。

找到的文件列表显示在一个带有单选按钮的简单对话框中,用于从中选择文件。实际上,它只显示一个警报,如果按取消,它什么都不做。

请注意我在InDesign中测试了这个,而不是Photoshop,因为它是一个更简单的脚本测试平台,因此有些属性名称可能已关闭。

nameCheck