【问题标题】:getFiles() not foldersgetFiles() 不是文件夹
【发布时间】:2014-02-07 15:21:43
【问题描述】:
我在一个临时文件夹中有几个文件。我可以使用以下脚本将它们加载到 Photoshop 中:
var sourceFolder = Folder("C:\\temp");
if (sourceFolder != null)
{
var fileList = sourceFolder.getFiles();
}
这一切都很好,但是我如何忽略也可能在其中的目录(例如 C:\temp\waffles)。
我知道我可以检查有效的图像扩展名,然后将它们添加到新的文件列表数组中,然后加载它。我认为搜索选项 TopDirectoryOnly 在这里无效。
【问题讨论】:
标签:
javascript
photoshop-script
getfiles
【解决方案2】:
如果我在获取文件夹或文件时使用它,我会避免稍后写if():
var fileList = sourceFolder.getFiles(function(f) { return f instanceof File; });
仅获取文件夹时相同:
var fileList = sourceFolder.getFiles(function(f) { return f instanceof Folder; });
不过建议尽量少用getFiles函数,因为代码会跑得更快。
我还使用RegExp 对象仅选择文件夹中的特定子文件夹。
例如,如果我设置一个正则表达式,如 'regthis' var,如下所示。使用“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);