Extendscript当前脚本路径

21

我想获取当前运行的Extendscript的绝对文件夹路径。

例如,在php中使用__DIR__(或)在nodejs中使用__dirname。在Extendscript中的等效方法是什么。

5个回答

44

我找到了,它是$.fileName

对于文件夹名称,它是(new File($.fileName)).parent


1
顺便提一下(如果有人在关注),文件夹路径是不带尾随反斜杠返回的,而且它已经是extendscript格式了,例如:/c/some%20folde%20with%spaces/some/folder,但脚本喜欢这个样子。 - bgmCoder
1
我可以澄清一下:$.fileName 返回的是当前正在执行的脚本的绝对路径,而不是打开的文件(例如,在Illustrator中编辑的.ai文件)。 - caiosm1005
至少在Illustrator中,只有在ExtendScript中打开脚本并执行时才有效。直接打开脚本是不起作用的。 - Jorjon
1
请注意,虽然在“纯”脚本执行的上下文中$.fileName可以正常工作,但如果您在某些Adobe应用程序(如Photoshop)的HTML面板的上下文中进行评估,则可能会返回垃圾(例如随机整数)。在这种情况下,如果您需要获取JSX的绝对路径,则可能需要使用CSInterface.prototype.getSystemPath() - Davide Barranca
2
变量 scriptFolder = (new File($.fileName)).parent.fsName; - lbsweek

5

我写了一篇关于这个的文章,你可能会发现有帮助, :)

基本上:

var myPath = (app.activeDocument.fullName.parent.fsName).toString().replace(/\\/g, '/');
var myScriptPath = (File(app.activeScript.fullName).parent.fsName).toString().replace(/\\/g, '/');

alert('Document path is: ' + myPath + ' , and script path is: ' + myScriptPath);

mim,


3
File($.fileName).path;

目前看来似乎能胜任此工作


1
如果您需要相对于活动文档引用文件,可以使用app.activeDocument.filePath

2
请注意,这是针对 Photoshop 的。$.filename 可在所有应用程序中使用。 - J. Peterson
3
app.activeDocument 不等于 app.activeScript - Tobias Kienzler

-1

app.activeScript.parent应该就可以了 - 需要注意的是,如果你使用一个Windows文件链接,你将得到实际脚本位置,而不是.lnk文件的位置。


请注意,这在After Effects的extendscript中是无效的。 - Spencer
同样适用于Photoshop - Zollie

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