运行 JavaScript "for each file or folder" 在 Finder 中选择,使用 macOS Automator 服务工作流程

Run JavaScript "for each file or folder" that's selected in Finder, using a macOS Automator service workflow

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

这就是我得到的:

1.输入

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。复制到剪贴板

问题: 只有最后一个文件被复制到剪贴板。

我该如何解决这个问题,这样我就可以 select 多个文件,让 Automator 循环遍历所有路径,使用 JavaScript 进行必要的文本替换,并将所有新路径复制到剪贴板?

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

PS:我如何使用 AppleScript 执行此操作?

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

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

你应该检查的一件事(我没有检查,因为我不完全清楚上下文)是 input 接收 posix 格式的路径,例如/path/to/something,而不是旧的 HFS 格式,例如Macintosh HD:path:to:something.