1

我在一个临时文件夹中有几个文件。我可以使用以下脚本将它们加载到 Photoshop 中:

  var sourceFolder = Folder("C:\\temp");
  if (sourceFolder != null)
  {
     var fileList = sourceFolder.getFiles();
  }

这一切都很好,但是我如何忽略也可能在其中的目录(例如 C:\temp\waffles)。

我知道我可以检查有效的图像扩展名,然后将它们添加到新的文件列表数组中,然后加载它。我认为搜索选项 TopDirectoryOnly 在这里无效。

4

2 回答 2

2

由于 getFiles() “返回一个文件和文件夹对象数组”,您将需要遍历每个返回的对象并测试它是什么类型的对象。来自 Adob​​e 的 Creative Suite 5 Javacript 工具指南

有几种方法可以区分 File 和 Folder 对象。例如:
if (f instanceof File)...
if (typeof f.open == "undefined")... //Folders do not open.
于 2014-02-12T03:48:31.823 回答
0

如果我在获取文件夹或文件时使用它,我会避免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 个小写字母 'av';
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);
于 2015-04-13T09:02:24.440 回答