使用脚本一次打开多个单独打包的indesign文件

时间:2016-11-23 02:21:48

标签: javascript adobe-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文件的此文件夹的路径是desktop / ads / client1,但在ads文件夹中有多个文件夹(client1,client2,client3等),每个文件夹都包含一个indesign文件。

我想要做的是选择ads文件夹并运行脚本,让它自动搜索每个文件夹并打开里面的indesign文件。

我希望我能够很好地解释这一点。提前谢谢。

1 个答案:

答案 0 :(得分:2)

我使用自己的递归函数来获取文件所在的子文件夹...

&#13;
&#13;
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") );
}
&#13;
&#13;
&#13;