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”未定义。
答案 0 :(得分:1)
你的错误在于
中的错误语法var fileNum = fileName.substring(12,fileName.length -5) + [a-z];
...它只是错误的语法,你好像把GREP混合到了JS中。发出错误是因为[...]
表示一个数组, 有效“添加”到字符串,但表达式a-z
(“a
减去{{ 1}}“)需要名为 z
和a
的变量。我想你在这里只是想要某种通配符。
根据当前文件名读取候选文件列表,以解决整个问题。这有点难以在本地测试,因为它需要大量的虚拟文件(我并不完全确定我理解你的程序)。但是,以下的一般想法应该是清楚的。
不是提示“任何”字母,而是显示可用选项更加用户友好。我不确定你是如何获得候选人名单的,所以我会让你自己填写。您需要调整此z
来电;目前,它会从getFiles
读取文件,并在其名称后面加filePath
来获取以*
开头的所有内容。
找到的文件列表显示在一个带有单选按钮的简单对话框中,用于从中选择文件。实际上,它只显示一个警报,如果按取消,它什么都不做。
请注意我在InDesign中测试了这个,而不是Photoshop,因为它是一个更简单的脚本测试平台,因此有些属性名称可能已关闭。
nameCheck