代码之家  ›  专栏  ›  技术社区  ›  minseong

删除超过30天的下载?

  •  11
  • minseong  · 技术社区  · 7 年前

    我正在尝试在automator中创建一个任务,如果文件/下载时间超过30天,则将其移动到垃圾箱。

    我希望它每天都能运行。

    但它不工作,Finder只是挂起并停止响应,我必须从活动监视器中强制退出它。

    on run {input, parameters}
    
        tell application "Finder"
            set deleteFileList to (files of entire contents of folder alias "Macintosh HD:Users:George:Downloads" whose modification date is less than ((get current date)) - 30 * days)
            try
                repeat with deleteFile in deleteFileList
                    delete deleteFile
                end repeat
            end try
        end tell
    
        return input
    end run
    
    2 回复  |  直到 7 年前
        1
  •  20
  •   user3439894    7 年前

    我会采取不同的方法,使用一组 自动机 不使用

    以下内容 工作流 将实现您希望实现的目标。

    ,创建新的 工作流 添加以下操作:

    • 获取指定的查找程序项
      • 将下载文件夹添加到其中。
    • 获取文件夹内容
    • 筛选器查找器项
      • 在以下位置查找文件:
        • 以下都是真的
          • 上次修改日期不在最近30天内

    保存 工作流 作为一个 应用 清理下载。应用程序

    AppleScript 版本,它在我的测试中做到了。


    苹果的 安排这样的事情的首选方法是使用 launchd launchctl .

    要运行 清理下载 ,每天,我会做以下事情:

    1. 添加 清理下载 收件人: 系统首选项 &燃气轮机; 安全和;隐私 &燃气轮机; 隐私 &燃气轮机; 可访问性
    2. ~/Library/LaunchAgents/

      • 例子: com.me.cleanup.downloads.plist 作为包含以下内容的XML文件:

        <?xml version="1.0" encoding="UTF-8"?>
        <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
        <plist version="1.0">
        <dict>
            <key>Label</key>
            <string>com.me.cleanup.downloads</string>
            <key>ProgramArguments</key>
            <array>
                <string>/Applications/Cleanup Downloads.app/Contents/MacOS/Application Stub</string>
            </array>
            <key>RunAtLoad</key>
            <false/>
            <key>StartCalendarInterval</key>
            <array>
                <dict>
                    <key>Hour</key>
                    <integer>10</integer>
                    <key>Minute</key>
                    <integer>00</integer>
                </dict>
            </array>
        </dict>
        </plist>
        
      • Hours Minutes StartCalendarInterval ,以满足您的需要。示例设置为:上午10:00

    3. 航空站 以下内容 命令 负载

      launchctl load ~/Library/LaunchAgents/com.me.cleanup.downloads.plist
      

    注:有关详细信息,请参阅手册页 启动 启动Ctl man launchctl

    或者使用具有GUI的第三方实用程序,例如: Lingon X


    对您的 AppleScript 密码 :

    A. repeat 没有必要,只需使用:

    move deleteFileList to trash
    

    这个 current date 技术上根据 current application Finder 查找器 不理解 当前日期 命令 . 因此 设置 并使用 在命令中。

    set thisDate to get (current date) - 30 * days
    
    ... whose modification date is less than thisDate
    

    现在我不是建议你在 工作流 我提议,我只是指出 密码 我反对。

        2
  •  0
  •   pbell    7 年前

    如果Finder挂起,这可能是因为“整个内容”中的文件太多。可能是一些下载的项目由带有子文件夹/子文件夹的文件夹组成,。。。然后文件太多。

    相反,我建议您只查看下载文件夹的第一级:项目顶级:

    Set DeleteFileList to every items of folder "Macintosh HD:Users:George:Downloads" whose modification date is less than ((get current date)) - 30 * days)
    

    DeleteFileList的内容将由文件和文件夹组成,但我猜您希望删除完整的文件夹,而不仅仅是其中的文件。