如何设置修改给定文件时运行的AppleScript?

如何设置修改给定文件时运行的AppleScript?,applescript,Applescript,我知道applescripts可以设置为作为文件夹操作运行,但是有没有办法让它们作为文件操作运行?是的,我知道我可以通过创建一个新文件夹、将脚本放入其中并作为文件夹操作运行来解决这个问题,但我想知道这是否可以实现。没有简单的内置方法来实现。但是,有很多方法可以设置要运行的Applescript。不过,一般来说,您必须执行一些非Applescript编码 查看此提示和OSXHints中的信息: 他们有一个Python脚本,演示如何使用fsevents.so监视文件更改。然后,您只需修改Pytho

我知道applescripts可以设置为作为文件夹操作运行,但是有没有办法让它们作为文件操作运行?是的,我知道我可以通过创建一个新文件夹、将脚本放入其中并作为文件夹操作运行来解决这个问题,但我想知道这是否可以实现。

没有简单的内置方法来实现。但是,有很多方法可以设置要运行的Applescript。不过,一般来说,您必须执行一些非Applescript编码

查看此提示和OSXHints中的信息:

他们有一个Python脚本,演示如何使用fsevents.so监视文件更改。然后,您只需修改Python以调用Applescript(或者简单地使用Appscript在Python中编写脚本)

或者,您可以让一个程序在特定的时间间隔检查一个文件,然后在文件更改时运行。此提示说明在Perl中:


我将这个问题交叉发布给了,那里的一些用户给出了一些只使用系统资源而不使用第三方应用程序的解决方案。按照链接查看答案


基本上,您需要使用
launchd
查看文件,并在文件更改时启动脚本。然后,您需要创建一个
.plist
,它描述要运行的脚本和要查看的文件或目录。

我找到了一种方法来实现这一点

Shell脚本:

find watchedfilepath -mtime -1 -exec cp {} watchedfolderpath ';'
在Automator中创建日历事件以运行此shell脚本,该脚本将检查文件。如果在过去24小时内对其进行了修改,则会将其复制到关注的文件夹中。然后在Automator中创建一个动作,将其移动到垃圾箱中(否则下次shell脚本运行时它将无法工作)


在监视的文件夹上设置文件夹操作,以监视添加的新项目,然后它会通知您。我已经创建了一个脚本向我发送电子邮件,并将其放在库/脚本中的“操作”文件夹中。这是一个老问题,但MacOS中的Apple Automator工具确实做到了这一点。您可以将其设置为监视文件夹并执行Applescript、Shell脚本等。

我应该想到这一点。Launchd是一种很好的方法。我建议运行Lingon,这样可以更轻松地管理已启动的内容。我认为它可以在应用商店中使用,尽管它显然违反了指南。(我在它免费的时候得到了它)请注意Launchd的问题是,无论是否有人登录,它都会尝试运行Applescript。但是如果没有人登录,你会出现奇怪的错误。不幸的是,链接被破坏了。这就是我们发布解决方案而不仅仅是链接的原因。@andreherculano-更新了答案以包含一个工作链接。我现在没有时间修改答案,但如果您想在中编辑,请继续。谢谢@eykanal我已将接受的答案从链接复制到您的答案中。希望对某人有所帮助:)请注意,修改文件时不会触发文件夹操作。