2014-09-30 82 views
0

我有脚本部分工作。 它将所有打开的psd作为jpg保存到一个单独的目录中,并关闭一些未打开的文件。 该目录有五个文件。该脚本只保存三个文件, 我做错了什么?保存后关闭所有打开的文档

#target photoshop 

if (app.documents.length > 0) { 
//flatten the active document 
app.activeDocument.flatten(); 

//jpeg options 
var myJPEGOptions = new JPEGSaveOptions(); 
myJPEGOptions.embedColorProfile = true; 
myJPEGOptions.formatOptions = FormatOptions.STANDARDBASELINE; 
myJPEGOptions.matte = MatteType.WHITE; 
myJPEGOptions.quality = 12; 
myJPEGOptions.scans = 3; 

// get documents; 
var docs = app.documents; 
for (var m = 0; m < app.documents.length; m++) { 
app.activeDocument = docs[m]; 

try { 
//save file to folder 
var myFile = new File(("~/Desktop/forum-test") + "/" + activeDocument.name); 
app.activeDocument.saveAs(myFile, myJPEGOptions, true); 

//close the document 
activeDocument.close(SaveOptions.DONOTSAVECHANGES); 
} 


catch (e) { 
alert ("Error the script did not execute"); 
} 

} 
} 

回答

0

我觉得这两条线都是错误的:

//save file to folder 
var myFile = new File(("~/Desktop/forum-test") + "/" + activeDocument.name); 

//close the document 
activeDocument.close(SaveOptions.DONOTSAVECHANGES); 

你不是应该使用app.activeDocument代替activeDocument?无论如何,activeDocument是什么?

+0

我不知道如何纠正的第一行。 – user1825922 2014-09-30 20:13:15

+0

在两行中将activeDocument更改为app.activeDocument,让我们看看会发生什么 – acontell 2014-09-30 20:45:03

+0

我尝试了您的建议。不知何故,脚本只能保存5个文件中的5个。这与他的循环有关吗? – user1825922 2014-10-01 06:12:50

0

app.documents集合是动态的,所以当你关闭一个文档时,这个集合会相应地改变。

因为你关闭你的文档中一个循环,你对app.documents.length比较的递增索引你不处理的所有文件(每个循环处理时间app.documents.length减少一个)。

尝试while循环,而不是:

while (app.documents.length){ 
    // Save and close the active document here. 
} 
相关问题