如何使用ExtendScript创建文件夹?

8

这似乎是一个非常容易解决的问题,但我已经在此上面纠结了将近一个小时。我需要一段JavaScript/extendscript代码片段,以便我的InDesign CS6脚本可以创建一个文件夹。我知道应该在哪个现有文件夹中创建新文件夹,并且我知道这个新文件夹的名称。但是如何让JavaScript来实现呢?

顺便说一下,在线搜索"folderObj.create()"方法,它在JavaScript工具指南中,结果都是无用的。我尝试了该方法的几种变化,但似乎都没有真正创建这个文件夹。我错过了什么吗?

3个回答

19
    var f = new Folder('/c/myfolder/');
    if (!f.exists)
        f.create();

7

好的,找到了一个解决方法:我必须绝对指定文件夹,而不是使用~的家目录快捷方式。此外,我必须在最开始使用/Volumes。因此,代码变成了:

var f = new Folder("/Volumes/apache HD/Users/apache/Desktop/my_new_fodler");  
f.create();

最终看起来那个方法行得通了。感谢@Anna Forrest和@fabiantheblind的帮助!(你似乎是这里的ExtendScript专家)


那么addFolder()方法怎么样?它是用来做什么的? - Amal lal T L
从初步搜索来看,addFolder()似乎是一种仅适用于After Effects而非其他Adobe程序的方法。它似乎在After Effects项目bin中创建文件夹以容纳项目资产,这似乎是与实际在操作系统文件系统上创建目录不同的实体。我可能错了,因为我并不经常使用AE,更不用为其编写脚本。我主要在日常工作中使用Illustrator和InDesign。对于它们,必须首先创建一个实际的ExtendScript Folder对象,然后使用.create()将其写入文件系统作为目录。 - Sturm
我忘记将我的文件夹创建代码封装在一个函数中。请确保它被封装在一个函数 createFolder() { ... 在这里放置 ...}; createFolder(); 中并执行以成功运行。 - Archie Butler

4

试试这个:

var f = new Folder("~/Desktop/my_new_fodler");  
f.create();

不行。我刚试着将它复制/粘贴到 ExtendScript 工具包中,以 InDesign 为目标运行;但什么也没发生。嗯,脚本似乎已经成功运行了,但桌面上没有创建文件夹。 - Sturm
说到混淆和毫无意义...今天早上登录并尝试后,你的代码可以运行。_然而_,我随后连接了我们的两个服务器,然后再次运行代码,但什么也没有发生。这是怎么回事? - Sturm
如果父文件夹不存在或无法找到,我遇到了奇怪的行为。因此,在这种情况下,使用 ~ 可能不会映射到您期望的位置,因此 ~/Desktop 找不到?我发现始终使用完整路径更安全。 - Anna Forrest
是的,我现在基本上已经明白了路径字符串的重要性。虽然我仍在使用试错法,但我已经确定路径越“绝对”,文件夹就越有可能被创建。希望这有些意义。 - Sturm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接