Javascript 保存后关闭所有打开的文档

Javascript 保存后关闭所有打开的文档,javascript,Javascript,我的脚本部分工作。 它将所有打开的psd作为jpg保存到一个单独的目录中,并关闭一些打开的文件(不是全部)。 该目录有五个文件。脚本只保存三个文件, 我做错了什么 #target photoshop if (app.documents.length > 0) { //flatten the active document app.activeDocument.flatten(); //jpeg options var myJPEGOptions = new JPEGSaveOptio

我的脚本部分工作。 它将所有打开的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");
}

}
}
#目标photoshop
如果(app.documents.length>0){
//展平活动文档
app.activeDocument.flatte();
//jpeg选项
var myJPEGOptions=新的JPEGSaveOptions();
myJPEGOptions.embedColorProfile=true;
myJPEGOptions.formatOptions=formatOptions.STANDARDBASELINE;
myJPEGOptions.matte=MatteType.WHITE;
myJPEGOptions.quality=12;
myJPEGOptions.scans=3;
//获取文件;
var docs=app.documents;
对于(var m=0;m
我认为这两行是错误的:

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


你不应该使用
app.activeDocument
而不是
activeDocument
?什么是
activeDocument

应用程序文档集合是动态的,因此当您关闭文档时,此集合会相应地更改

因为您是在for循环中关闭文档的,在for循环中,您将递增索引与
app.documents.length
进行比较,所以您并不是在处理所有文件(因为
app.documents.length
每次处理循环时都会减少一个文件)

请尝试while循环:

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

将两行中的activeDocument更改为app.activeDocument,让我们看看发生了什么我尝试一下你的建议。不知怎的,脚本只保存了5个文件中的3个。这与循环有关吗?可能是,您是否尝试输出(使用alert或console.log)app.documents(app.documents.length)的长度?文档是如何存储在数组中的?它们是否位于0和app.documents.length-1之间?我使用控制台时不是很流利。我试试看。阵列中的图像具有增量编号。该脚本用于使用和非连续的文件名。
while (app.documents.length){
  // Save and close the active document here.
}