如何使用 Javascript for Automator 获取输入文件夹及其文件?

How can I get an input folder and its files using Javacript for Automator?

我正在编写一个自动化工作流程来处理文件和文件夹。我写在JavaScript因为我比较熟悉

我想收到一个文件夹,想知道文件夹的名字和里面的文件。

以下是我尝试过的大致情况:

  1. Window 在 Finder 中接收当前文件夹(我只对第一个也是唯一一个文件夹感兴趣)

  2. 获取文件夹内容

  3. JavaScript:

    function run(input,parameters) {
        var files = [];
        for(let file of input) files.push(file.toString().replace(/.*\//,''));
        //  etc
    }
    

这行得通,但我没有文件夹名称。使用这个,我得到了每个文件的完整路径名,这就是为什么我通过 replace() 方法 运行 它。

如果我省略上面的第2步,我得到了文件夹,但我不知道如何访问文件夹中的内容。

我可以通过获取第一个文件并去掉文件名来伪造文件夹,但我想知道是否有更直接的方法来获取文件夹及其内容。

我已经开始工作了。如果有人有类似的问题:

//  Window receives current folders in Finder

var app = Application.currentApplication()
app.includeStandardAdditions = true

function run(input, parameters) {
    let directory = input.toString();
    var directoryItems = app.listFolder(directory, { invisibles: false })
    var files = [];

    for(let file of directoryItems) files.push(file.toString().replace(/.*\//,'')) ;

    //  etc
}

我没有包含“获取文件夹内容”步骤,而是使用 app.listFolder() 遍历文件夹。 replace() 方法是 trim 关闭直到最后一个斜杠的所有内容,给出文件的基本名称。