2014-09-30 40 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. 
} 
相關問題