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

Need ExtendScript to open a file without knowing the full file name

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" 未定义。

你的错误在于

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

...只是语法错误,您似乎将 GREP 混入 JS。发出错误是因为 [...] 表示一个数组, 对 'add' 有效的字符串,但是表达式 a-z ("a minus z") 需要变量 named az。我想您只是想在这里使用某种通配符。

通过根据当前文件名读取候选文件列表来规避整个问题。这有点难以在本地测试,因为它需要大量的虚拟文件(而且我不完全确定我理解你的程序)。不过,下面的大意应该清楚了。

与其提示输入 'any' 字母,不如显示可用选项更便于用户使用。我不知道你是怎么得到候选人名单的,所以我让你自己填。您需要为此调整 getFiles 调用;目前,它从 filePath 读取文件,其名称后带有 * 以获取以 nameCheck.

开头的所有内容

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

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

srcDoc = app.activeDocument;
var fileName = srcDoc.name;
var docName = fileName.substring(0,fileName.lastIndexOf('.'));
var filePath = srcDoc.filePath.toString();
var fileExt = fileName.substring(fileName.lastIndexOf('.')+1);

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

var filelist = Folder(filePath).getFiles (nameCheck+'*.'+fileExt).sort();

if (filelist.length == 0)
{
    alert ('No files found matching '+nameCheck+'*.'+fileExt);
} else
{
    var fileDialog = app.dialogs.add({name:"Choose a file", canCancel:true});
    with (fileDialog)
    {
        with(dialogColumns.add())
        {
            with (fileSel = radiobuttonGroups.add())
            {
                radiobuttonControls.add({staticLabel:filelist[i].name,checkedState:i==0});
            }
        }
    }

    if (fileDialog.show() == true)
    {
        alert ('you picked '+filelist[fileSel.selectedButton].name);
    }
}