使用 automator 和 AppleScript 根据文件的名称和内容将文件移动到不同的文件夹和子文件夹

Using automator and AppleScript to move a file to a different folder and subfolder based on name and content of a file

我是 Automator 和脚本方面的新手... 看了很多和我类似问题的答案,但是用Automator + AppleScript适配不成功

这是我想要做的:

现在,我成功获取了2个变量中的年和月,但是我在Automator的下一步中找不到使用变量移动文件的好方法。

以下应该可行,或者至少让您走上正确的道路。为变量设置以下内容:

  • monthName:一个 text 变量,保存月份值,如上
  • yearName:text 变量,保存年份值,如上
  • filePath:一个 storage 变量,保存对您正在处理的文件的引用
  • outputFolder:一个 storage 变量,它将保存对输出文件夹的引用

前两个动作从存储中收集月份和年份,并将其作为输入变量中的列表传递给 AppleScript 动作。该 AppleScript 操作从列表中提取值,将它们连接成路径字符串,然后使用 POSIX File 命令将其转换为文件引用。第四个操作将文件引用存储在 outputFolder 变量中。

请注意,第五个操作忽略了第四个操作的输入。相反,它会恢复原始文件说明符(您将在工作流的较早位置存储该文件说明符,然后将文件说明符发送到 Move Finder Items 操作,该操作使用存储在 outputFolder 变量中的值作为其目标。

我已经简化了流程并找到了使用 AppleScript 的方法:

on run {input, parameters}
    set theFile to input as text
    set yearName to ((characters 34 thru -1 of theFile) as string) --trim first 35
    set yearName to ((characters 1 thru -22 of yearName) as string) --trim last 23
    set monthName to ((characters 39 thru -1 of theFile) as string)
    set monthName to ((characters 1 thru -19 of monthName) as string)
    set destinationFolder to ("Macboot :Travail en cours:Google Drive:Company:Comptabilité:" & yearName & ":" & monthName & ":Compte Transferwise 1:Relevé PDF + fichier CSV:" as text)
    tell application "Finder"
        activate
        move theFile to destinationFolder -- use "copy source_file to folder (target_folder as alias)" to copy the files
    end tell
    set result to {yearName, monthName, theFile, destinationFolder}
    return result
end run