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

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

Надеюсь, я объяснил это достаточно хорошо, чтобы иметь смысл. Заранее спасибо.


person Kyle    schedule 23.11.2016    source источник


Ответы (1)


Я сделал свою собственную рекурсивную функцию для получения файлов, в какой бы подпапке они ни находились…

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

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

person Loic    schedule 23.11.2016
comment
Спасибо большое! Работает как чемпион! - person Kyle; 27.11.2016