【问题标题】:Mac Automator - Compress (ZIP) a folder and rename as original folder name without the entirety of the pathMac Automator - 压缩(ZIP)文件夹并重命名为原始文件夹名称,而不包含整个路径
【发布时间】:2019-12-12 10:17:39
【问题描述】:

大家好,任何类型的编程都是新手,但我已经编写了一个 Automator 工作流程来完成我每天都在做的重复性任务。基本上我正在准备艺术品文件和文件夹以发送到打印机。 步骤如下:

设置变量的值(变量为ArtworkFolder)

我在其中放置包含插画文件的艺术品文件夹和 PDF

获取指定的查找器项目

在 RAID 服务器上定位文件

复制 Finder 项目(到 ArtworkFolder)

将上述文件复制到文件夹中

要求确认 -

提示用户选择更新的 PDF

询问查找器项目 -

打开新 PDF 所在的文件夹

复制 Finder 项目(到 ArtworkFolder)-

将 PDF 文件复制到文件夹中(覆盖旧文件)

要求确认

提示用户选择打印指南

询问查找器项目

打开打印指南所在的文件夹

复制查找器项目(到变量 ArtworkFolder) -

将打印指南复制到文件夹中

这就是我认为可能出错的地方

获取变量的值(ArtworkFolder)

这应该是获取原始文件夹的名称

获取指定的查找器项目

及其所有内容

创建存档

然后将所有内容压缩在一起

但它会使用我不想要的名称 Archive.zip 压缩它...

重命名查找器项目:替换文本

设置为在基本名称中查找“存档”,仅忽略大小写。然后 用变量 ArtworkFolder 替换它

但它会用整个路径重命名文件夹

我试图通过添加…来去除路径

重命名查找器项目:替换文本

设置为仅查找路径 basename 中的所有内容,直到 唯一的文件夹名称并替换为任何内容(例如,我离开了替换框 空白)

但是它会像这样复制文件夹名称:

00000- 测试艺术品文件夹/00000- 测试艺术品文件夹.zip

我想要的只是原始文件夹名称(00000-测试艺术品文件夹)作为 zip 文件名。

任何提示都会受到极大的欢迎!

【问题讨论】:

    标签: macos automator pathname


    【解决方案1】:

    无论出于何种原因,Automator 都没有包含用于获取文件名的操作,因此您需要使用第三方操作或自己进行操作。可以使用 Run AppleScript 操作,但无论哪种方式,请注意您需要保存工作流项目并在获取名称时酌情使用 Ignore Input 选项,因此您不会将它们与文件项混在一起(另请注意,工作流和操作项是一个列表)。

    要获取单个项目的名称,可以将如下内容插入到您的工作流程中,其中名称的变量可以在重命名操作中使用:

    设置变量值 {变量:原始输入 } -- stash current items

    运行 AppleScript:-- 获取名称

    on run {input, parameters}
        set {theContainer, theName, theExtension} to getNamePieces from (first item of input)
        return theName
    end run
    
    to getNamePieces from somePath
        tell application "System Events" to tell disk item (somePath as text)
            set _container to path of container
            set {_name, _extension} to {name, name extension}
        end tell
        if _extension is not "" then
            set _name to text 1 thru -((count _extension) + 2) of _name -- just the name part
            set _extension to "." & _extension
        end if
        return {_container, _name, _extension}
    end getNamePieces
    

    设置变量值 {变量:项目名称 }

    获取变量的值 {变量:原始输入}(忽略输入)——继续工作流

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多