Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos Applescript将传入的图片延迟移动到其他文件夹_Macos_Applescript - Fatal编程技术网

Macos Applescript将传入的图片延迟移动到其他文件夹

Macos Applescript将传入的图片延迟移动到其他文件夹,macos,applescript,Macos,Applescript,我是一个苹果书呆子。所以我对这种类型的编码一无所知 我想制作一个监视文件夹的脚本。我使用一个处理图像的图像程序。创建jpg需要一秒钟的时间。因此,文件夹必须等待几秒钟才能将图像移动到另一个文件 这就是我要找的:空文件夹-文件夹中的jpg-等待2秒-将jpg移动到另一个文件夹-空文件夹 谢谢大家! 下面是一个小脚本示例,您可以将其保存在桌面上,作为监视器: #!/bin/bash # Source directory to watch and destination directory to c

我是一个苹果书呆子。所以我对这种类型的编码一无所知

我想制作一个监视文件夹的脚本。我使用一个处理图像的图像程序。创建jpg需要一秒钟的时间。因此,文件夹必须等待几秒钟才能将图像移动到另一个文件

这就是我要找的:空文件夹-文件夹中的jpg-等待2秒-将jpg移动到另一个文件夹-空文件夹


谢谢大家!

下面是一个小脚本示例,您可以将其保存在桌面上,作为
监视器

#!/bin/bash

# Source directory to watch and destination directory to copy to
SRC="$HOME/Desktop/source"
DST="$HOME/Desktop/dest"

# Create directories if not existent 
mkdir -p "$SRC" "$DST"

while : ; do
   find "$SRC" -type f -iname "*.jpg" -Btime +2s -exec mv {} "$DST" \;
   sleep 5
done
它基本上监视一个名为
Desktop/source
的目录,并查找其中名称以
“JPG”
结尾且在过去2秒内未被修改的任何文件。如果找到了,它会将它们移动到名为
Desktop/dest
的目录中,并在再次检查之前休眠5秒钟

您需要启动终端并通过键入以下内容使脚本可执行:

chmod +x $HOME/Desktop/monitor

然后,只要你想让它运行,你只需双击桌面上的
monitor
图标。

这个AppleScript就会完成你的要求。根据AppleScript的本质,阅读它应该能够很自然地解释每一行的作用:

    on adding folder items to ThisFolder after receiving SomeFiles
        set ThatFolder to POSIX file "/path/to/new/folder"

        delay 2

        repeat with TheFile in SomeFiles
            tell application "Finder" to ¬
                if name extension of (TheFile as alias) is in {"JPG", "JPEG"} then ¬
                    move TheFile to ThatFolder
        end repeat
    end adding folder items to
这是设计为作为文件夹操作运行的,它使您选择的文件夹由MacOS自动监控,以便每当它检测到对该文件夹的更改时,它都会执行附加到该文件夹的脚本。在本例中,您可以从脚本的第一行推断,每次将文件添加到相关文件夹时,该脚本都将自动运行

要设置文件夹操作,请执行以下操作:
  • 将上面的AppleScript复制到脚本编辑器中。编辑第二行,将“/path/to/new/folder”替换为要将JPEG移到其中的新文件夹的路径(保留引号)。我不会费心从编辑器内部运行脚本,因为它不会工作。键入的路径必须完整,即“/Users/Richard/Pictures/Processed”,而不是“~/Pictures/Processed”
  • 随你的便。但是,它必须保存在以下目录中:~/Library/Scripts/Folder Action Scripts,其中~表示您的主文件夹(即/Users/Richard/或其他)。如果文件夹“文件夹操作脚本”不存在,请创建它
  • 关闭脚本编辑器。导航到要观看的文件夹,即图像最初将等待的文件夹。现在向上导航一级,进入包含所述文件夹的目录
  • 右键单击文件夹并将鼠标悬停在底部的“服务”菜单项上。然后选择文件夹操作设置
  • 通过选中顶部的框启用文件夹操作。如果您的文件夹尚未出现在左侧列表中,则可以添加它。然后,在右侧列表中,单击底部的“+”,您刚才保存的脚本应该是弹出脚本列表中的众多脚本之一。选择它并添加它
  • 确保您关注的文件夹和所选脚本旁边的复选框都已选中,并且您已完成

  • 现在,只要文件夹收到任何文件,就会执行该脚本。脚本会将扩展名为.jpg或.jpeg的任何文件移动到新文件夹中。只需确保新文件夹已经存在(如果不存在,我不会合并一行来创建它;脚本只会抛出一个错误,您的图像将不会被移动)。

    这应该一直运行吗?或者当你正在运行另一个图像程序时?为什么是Applescript?它非常冗长,是苹果电脑独有的?就我个人而言,我会使用一个
    bash
    脚本,它更普遍地适用于Mac和Linux/Unix计算机。比我的更优雅-很好!这就是我要找的!非常感谢我的朋友!我试图使用此方法将图像文件从下载移动到特定文件夹,但它不起作用。@CJK:谢谢您的评论。在新文件夹的路径上,我有一个名为Ph.D.的文件夹。我把它改成了PhD(去掉中间的点),然后它就成功了。