Applescript:所有脚本都可访问的系统范围的全局变量

时间:2014-04-02 23:18:01

标签: applescript acrobat osascript preflight

我们有一个PDF文档处理系统,用AppleScript实现(我们使用osascript从shell调用脚本)。在某些脚本中,我们从Applescript调用Acrobat Preflight Droplets。

这通常没有问题。但是,在某些情况下,处理过的文档很大或很复杂。在写入报告并将文档移动到“success”或“failure”文件夹之前,Droplet会将控制权返回给脚本。结果是该过程继续,但没有移动的文件,它最终会失败。

到目前为止,解决方法是在这些Droplet调用之后添加延迟。这确实有帮助,但是对于小型文档来说,这是浪费时间,并且总会有一个大而复杂的文档,比延迟时间更长。

我们还发现,完成撰写报告和移动文档所需的时间取决于系统的速度(必须预期......)。

解决方法是根据文档大小,页数和与机器相关的参数计算延迟。文档大小和页数没什么大不了的;它们可以在Applescript中检索。

问题是与机器相关的参数,可以通过实验确定。但是如何让所有需要它的脚本都能使用该参数呢?

将它合并到脚本中是不可取的,因为我们安装了许多系统,如果我们这样做,我们最终会陷入维护噩梦。在初始系统调用中将其作为参数传递也是不可能的,因为调用很多,并且再次导致维护噩梦。

那么,有没有办法设置一个可以存储该机器参数并可以从任何Applescript轻松调用的地方,无论它本身是如何被调用的。

非常感谢您的建议。

2 个答案:

答案 0 :(得分:2)

您可能会发现系统事件中的Property List Suite很有用。它是存储然后检索此类信息的标准方法。属性列表文件本身只是XML文件,因此您甚至可以在AppleScript之外创建它们,然后在脚本中读取它们。

https://apple.stackexchange.com/questions/58007/how-do-i-pass-variables-values-between-subsequent-applescript-runs-persistent

上有一些示例说明

答案 1 :(得分:0)

一个简单的建议,如果你只有一个参数来跟踪,那就是在每台机器上的已知位置只有一个文本文件。文本文件的唯一内容是机器参数。我喜欢使用Application Support文件夹这样的东西。

假设您的机器参数是CPU速度。您可以使用以下内容在/Library/Application Support/Preflight Scripts/machinecpu.txt中保存文本文件:

2.4

然后在Applescript中,您只需阅读文本文件。:

set machineParam to read file "Macintosh HD:Library:Application Support:Preflight Scripts:machinecpu.txt"