如何使用 Javascript for Automator 获取输入文件夹及其文件?
How can I get an input folder and its files using Javacript for Automator?
我正在编写一个自动化工作流程来处理文件和文件夹。我写在JavaScript因为我比较熟悉
我想收到一个文件夹,想知道文件夹的名字和里面的文件。
以下是我尝试过的大致情况:
Window 在 Finder 中接收当前文件夹(我只对第一个也是唯一一个文件夹感兴趣)
获取文件夹内容
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 关闭直到最后一个斜杠的所有内容,给出文件的基本名称。
我正在编写一个自动化工作流程来处理文件和文件夹。我写在JavaScript因为我比较熟悉
我想收到一个文件夹,想知道文件夹的名字和里面的文件。
以下是我尝试过的大致情况:
Window 在 Finder 中接收当前文件夹(我只对第一个也是唯一一个文件夹感兴趣)
获取文件夹内容
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 关闭直到最后一个斜杠的所有内容,给出文件的基本名称。