2016-11-23 3 views
0

Я чувствую, что я уже очень близко к тому, чтобы это произошло, мне просто нужно добавить к нему еще один уровень.Откройте несколько отдельно упакованных файлов indesign сразу с помощью скрипта

Пока что код ниже откроет каждый файл 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 является настольные/реклама/client1, но в папке объявлений есть несколько папок (client1, client2, client3 и т.д.), и каждый из них содержит файл indesign.

Что я хочу сделать, это выбрать папку для объявлений и запустить сценарий и автоматически искать в каждой папке и открывать файлы 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