使用macOS Automator服务工作流程为在Finder中选择的“为每个文件或文件夹运行” JavaScript

时间:2019-12-24 05:05:19

标签: javascript applescript automator finder

试图编写一个服务,我可以控制并单击多个文件,运行一个Automator服务,该服务将这些文件的路径复制到剪贴板,并执行一些字符串替换。

这就是我得到的:

1。输入

the input

2。运行JavaScript

function run(input, parameters) {

    var path = String(input);
    path = path.replace(/^.+\/websites\//, "/"); // this should remove some stuff off the paths up until /websites/

    return path;
}

3。复制到剪贴板

问题:仅将最后一个文件复制到剪贴板。

如何解决此问题,以便选择多个文件,使Automator遍历所有路径,使用JavaScript进行必要的文本替换以及将所有新路径复制到剪贴板?

我尝试过for (path in input) { ... },但是path是带有输入索引值的字符串...

PS:如何使用AppleScript做到这一点?

1 个答案:

答案 0 :(得分:0)

由于这是JavaScript,因此可以奢侈地使用map,这意味着不需要传统意义上的循环:

function run(input) {
    return input.map( fp => fp.replace(/^.+\/websites\//. '/') );
}

您应该检查的一件事(我之所以没有这样做,是因为我不清楚上下文),是input以posix格式接收路径,例如 /path/to/something ,而不是旧的HFS格式,例如 Macintosh HD:path:to:something