【问题标题】:extendscript, get folder name扩展脚本,获取文件夹名称
【发布时间】:2026-01-22 11:40:01
【问题描述】:

我一直在学习和使用 Extendscript 和 After Effects CS6(通常使用 maxscript 和 python)来为 After Effects 创建一个可停靠的 UI。我已经设法做到这一点,但需要重组代码以在根文件夹中的文件夹中搜索,以获取构成我创建的树视图上的节点的 .jsx 文件。

目前,所有 .jsx 文件都在一个根文件夹中,但是由于文件夹系统的重组,我们现在有了一个文件夹来存放每个脚本

我需要能够将根文件夹中的文件夹名称返回/收集到一个数组中,以便在脚本的后面部分循环。

到目前为止,我的代码将返回根文件夹内文件夹的路径,但这不是我需要的,我不想为了获得最后一部分而将字符串拆分为组成部分路径。

下图中的根文件夹是“c:\AFX\theRoot\”,里面的文件夹名为 script1、script2、script3 script4

我打算发布文件夹结构的图片,但由于要求有特定评级,我不允许发布。

【问题讨论】:

  • 您有子文件夹但“不想拆分字符串”?为什么不?这是一个简单的操作(并且不会对琴弦造成物理伤害)。
  • 对于有经验的 Java 脚本编写者来说,可能是这样,但如前所述,我不是每天都使用 Javascript 和 extendscript。与其指出它有多简单,不如发布一个工作示例,以便我可以从中学习,因为您到目前为止所提供的内容无济于事。我不想显得忘恩负义,但到目前为止,响应并没有提供任何帮助来帮助前进。
  • 当然。但首先,你应该简单地展示你拥有的东西(或者如果代码很长并且问题是本地化的,则只显示一个 sn-p)并指出你遇到问题的地方。其次,您描述问题好像您知道如何拆分路径但“不想这样做”。因此我的问题是:你为什么不想这样做?
  • var ScriptsFolder = "Z:\\ddtest\\Malc\\all_MJA_Folders\\TestingFolders\\afterEffextsTests\\"; // ROOT 文件夹位置 var aFolder = new Folder("Z:\\ddtest\\Malc\\all_MJA_Folders\\TestingFolders\\afterEffextsTests") var foldername = aFolder.name;打印(文件夹名);
  • {//开始 var AFXS​​criptsFolder = "Z:\\ddtest\\Malc\\all_MJA_Folders\\TestingFolders\\afterEffextsTests\\" var AFXFolderList = [];子文件夹 AFXFolderList = collectSubFolders(Folder(AFXScriptsFolder));函数 collectSubFolders(theFolder) { if (AFXScriptsFolder != null ) { var foundFolders = theFolder.getFiles(); for(foundFolders 中的每个) { print(foundFolders[each].toString()); } } } }//END

标签: get directory names extendscript


【解决方案1】:

如果您已经有字符串。对它们进行操作可能是获取文件夹名称的最简单方法。除了拆分,您还可以使用这样的正则表达式:

var name = yourString.match(/([^\/]*)\/*$/)[1]

Credit for the regex goes to this thread

如果你有理由不这样做,ExtendScript 中有文件夹对象。您可以从这样的字符串创建一个新文件夹:

var folder = new Folder("/your/folders/name");

得到这样的名字:

var name = folder.name

希望这会有所帮助。

【讨论】:

  • 感谢您的帮助和信息,非常感谢。当你看到代码时,它似乎总是那么合乎逻辑。实施后我将发布我的示例脚本。我已经有一个查找 .jsx 文件并从单个文件夹位置整理它们的函数,我只是想知道如何通过指定根文件夹中的一组文件夹从各个文件夹中获取脚本名称并忽略任何其他文件类型。我知道逻辑,只是不知道当前的语法,但每天都在努力。
  • 由于我是问题的创建者,我不确定我对自己问题的答复为何被删除。我真的需要一些帮助来解决这个问题,所以希望这篇文章可以保留下来,以便我能得到一些意见。我需要能够转到已经存在且不需要创建的指定根文件夹。仅将根文件夹内的文件夹整理到数组中使用 for 循环遍历每个文件夹并找到 jsx 文件并将结果附加到数组中。
  • 我不需要创建新文件夹。我需要整理现有根文件夹中的现有文件夹,并将在该根文件夹中找到的文件夹名称存储到一个数组中,以便我可以在一个函数中迭代它们,该函数将使用子文件夹等中的图标动态创建树视图。
  • new Folder("/your/folders/name/") 不会在文件系统中创建文件夹。它为您提供作为参数提供的文件夹的对象表示。在此对象上,您可以使用方法,例如获取所有文件/子文件夹 (getFiles())。有关更多详细信息,请参阅文档:wiki.ecmascript.org/lib/exe/…
  • 嗨乔纳斯,感谢您的回复和信息,我一定会存储这些指针。我确实在星期五设法得到了我需要的东西,现在有一个脚本可以使用根文件夹中的项目构建 ui 树视图。还设法获取每个项目的图标。我现在正在重写事件功能以读取基于树项选择的执行脚本。一旦我意识到extendscript/javascript 很像 Maya 的 MEL,事情就开始到位了。