Adobe Illustrator JavaScript-将数据集应用于循环中的每个打开文档

Adobe Illustrator JavaScript-将数据集应用于循环中的每个打开文档,javascript,scripting,adobe,adobe-illustrator,Javascript,Scripting,Adobe,Adobe Illustrator,我编写了一个简单的脚本,可以在Adobe Illustrator中打开两个文档(文件->脚本),并对这些文档应用一些命令 剧本的目的;Illustrator中未打开任何文档,脚本将: 打开所需的文档 将XML变量库加载到这些文档中 显示该库中的数据集(只有一个数据集) 将文件保存在给定位置 关闭文件 剧本: try { var doc_1 = open(File("C:/file1.ai")); var doc_2 = open(File("C:/file2.ai"));

我编写了一个简单的脚本,可以在Adobe Illustrator中打开两个文档(文件->脚本),并对这些文档应用一些命令

剧本的目的;Illustrator中未打开任何文档,脚本将:

  • 打开所需的文档
  • 将XML变量库加载到这些文档中
  • 显示该库中的数据集(只有一个数据集)
  • 将文件保存在给定位置
  • 关闭文件
  • 剧本:

    try
    {
        var doc_1 = open(File("C:/file1.ai"));
        var doc_2 = open(File("C:/file2.ai"));
    
        var sourceDoc;
        var targetFile; 
    
        var options = new IllustratorSaveOptions();
    
        for (var i = 0; i < app.documents.length; i++ ) 
        {
            sourceDoc = app.documents[i];
    
            sourceDoc.importVariables(new File("C:/variables.xml"));
    
            sourceDoc.dataSets[0].display();
    
            targetFile = new File("C:/output" + sourceDoc.name + '.ai');
    
            sourceDoc.saveAs( targetFile, options );
    
            sourceDoc.close();
        }
    }
    catch(err)
    {
        alert(err);
    }
    
    试试看
    {
    var doc_1=打开(文件(“C:/file1.ai”);
    var doc_2=打开(文件(“C:/file2.ai”);
    var-sourceDoc;
    var目标文件;
    var options=新IllustratorSaveOptions();
    对于(var i=0;i
    此代码仅适用于上次打开的文件(file2.ai)。file1.ai从未被触摸过,几乎就像没有循环一样


    什么原因可能导致这种情况?

    关闭循环中的第一个文件时,您刚刚将
    app.documents[1]
    移动到
    app.documents[0]

    你想让他们倒转

    试试你的循环

    for (var i = app.documents.length; i >0 ; i-- ) 
    

    这就是答案。我在循环中逐个保存文件时也注意到了同样的行为。您必须以相反的顺序保存它们。