2016-11-23 79 views
0

我覺得我已經非常接近實現這一目標了,我只需要爲它添加另一個級別。用腳本一次打開多個單獨打包的indesign文件

到目前爲止,下面的代碼將打開運行腳本時所選文件夾中的每個設置文件。

var myFolder = Folder.selectDialog("Select Indesign Folder"); 
var myIndsnFiles = myFolder.getFiles("*.indd"); 

for(k=0; k<myIndsnFiles.length; k++) 
{ 
    app.open(myIndsnFiles[k]); 

    } 

因此,例如,讓我們說的路徑,此文件夾包含多個InDesign文件是桌面/廣告/客戶端1,但在廣告文件夾中有多個文件夾(客戶端1,客戶機程序,client3等)和每一個含有一個不確定的文件。

我想要做的是選擇ads文件夾並運行腳本,讓它自動搜索每個文件夾並打開裏面的indesign文件。

我希望我解釋得很清楚,是有道理的。提前致謝。

回答

2

我做自己的遞歸函數用於將文件複製任何子目錄他們在...

var api = { 
 
\t getFiles : function (fo, aExtensions, bRecursive, aFiles, includeFolder) 
 
\t { 
 
\t \t var exts = aExtensions? aExtensions.join("|") : ".+" ; 
 
\t \t var pattern = new RegExp ("\\."+exts+"$", "g"); 
 
\t \t var files = aFiles? aFiles : []; 
 
\t \t var filterFunction = function(file) 
 
\t \t { 
 
\t \t \t return pattern.test (file.name); 
 
\t \t } 
 
\t \t 
 
\t \t if (bRecursive) 
 
\t \t { 
 
\t \t \t var foFiles = fo.getFiles(); 
 
\t \t \t while ( f = foFiles.shift()) 
 
\t \t \t { 
 
\t \t \t \t if (f instanceof Folder) 
 
\t \t \t \t { 
 
\t \t \t \t \t if (includeFolder===true) files[ files.length ] = f; 
 
\t \t \t \t \t 
 
\t \t \t \t \t this.getFiles (f, aExtensions, true, files); 
 
\t \t \t \t } 
 
\t \t \t \t if (f instanceof File && pattern.test (f.name)) 
 
\t \t \t \t files[ files.length ]  = f; 
 
\t \t \t } 
 
\t \t 
 
\t \t \t return files; 
 
\t \t } 
 
\t 
 
\t \t else 
 
\t \t { 
 
\t \t \t return fo.getFiles (filterFunction); 
 
\t \t } 
 
\t }, 
 
} 
 

 
var fo = Folder.selectDialog(), u, files; 
 
if (fo) { 
 
\t files = api.getFiles (fo, ["indd"], true, u, false); 
 
\t alert(files.join("\r")); 
 
}

+0

非常感謝!像冠軍一樣工作! – Kyle