我在一个临时文件夹里有几个文件。我可以通过以下脚本将它们加载到Photoshop中:
var sourceFolder = Folder("C:\\temp");
if (sourceFolder != null)
{
var fileList = sourceFolder.getFiles();
}这一切都很好,但我如何忽略可能也在其中的目录(如C:\temp\waffles)。
我知道我可以检查有效的图像扩展名,然后将它们添加到新的文件列表数组中,然后加载它。我不认为搜索选项TopDirectoryOnly在这里有效。
发布于 2014-02-12 11:48:32
因为getFiles() "Returns an array of File and Folder objects“,所以您需要遍历返回的每个对象,并测试它是什么类型的对象。来自Adobe的Creative Suite5 Javacript Tools Guide
区分文件和文件夹对象有多种方法。例如:
if (f instanceof File)...
if (typeof f.open == "undefined")... //Folders do not open.
发布于 2015-04-13 17:02:24
如果我在获取文件夹或文件时使用此命令,则会避免稍后编写if():
var fileList = sourceFolder.getFiles(function(f) { return f instanceof File; });仅获取文件夹时也是如此:
var fileList = sourceFolder.getFiles(function(f) { return f instanceof Folder; });但是,建议尽可能少使用getFiles函数,因为代码会运行得更快。
我还使用RegExp对象来仅拾取文件夹中的特定子文件夹。
例如,如果我设置一个正则表达式,比如'regthis‘变量,如下所示。使用'getFiles‘收集的文件夹将与其名称相同:
A)必须在'12345678‘的末尾或’12345678‘之前有一个大写字母;
B)在A之前还必须有2个字符之一('_‘或'c');
C) B+A前必须有1个小写字母'a-v‘;
D)在C+B+A之前不能有'x‘、'y’或'z‘;
var ID_ = '12345678';
var regthis = new RegExp( '([^x-z]{1}[a-v]{1}[_|c]{1})([A-Z]?'+ID_+'?)$','i');
var sameIDfolder = Folder(myFolder).getFiles(regthis);https://stackoverflow.com/questions/21631437
复制相似问题