2014-09-30 3 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

+0

Измените activeDocument на app.activeDocument в обеих строках и посмотрим, что получится – acontell

+0

Я пробую ваше предложение. Как-то скрипт сохраняет только 3 файла из 5. Является ли это связанным с ним циклом? – user1825922

0

Коллекция app.documents является динамичной, поэтому, когда вы закрываете документ, эта коллекция изменяется соответствующим образом.

Поскольку вы закрываете документ внутри цикла for, где вы сравниваете инкрементирующий индекс с app.documents.length, вы не обрабатываете все файлы (поскольку app.documents.length уменьшается на единицу при каждом обращении цикла).

Попробуйте время цикла вместо:

while (app.documents.length){ 
    // Save and close the active document here. 
} 
Смежные вопросы