2

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

这通常可以毫无问题地工作。但是,在某些情况下,处理的文档很大或/和复杂。在编写报告并将文档移动到“成功”或“失败”文件夹之前,液滴将控制权返回给脚本。结果是该过程继续进行,但如果没有移动的文件,它最终会失败。

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

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

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

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

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

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

非常感谢您的建议。

4

2 回答 2

2

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

在https://apple.stackexchange.com/questions/58007/how-do-i-pass-variables-values-between-subsequent-applescript-runs-persistent有示例说明

于 2014-04-03T00:11:31.233 回答
0

A simple suggestion if you only have one paramater to keep track of would be to just have a text file in a known location on each machine. The only content of the text file would be the machine paramater. I like to use the Application Support folder this kind of thing.

Assuming your machine parameter is CPU speed. You can save a text file in /Library/Application Support/Preflight Scripts/machinecpu.txt with the contents:

2.4

Then in Applescript, you would just read the text file.:

set machineParam to read file "Macintosh HD:Library:Application Support:Preflight Scripts:machinecpu.txt"
于 2014-04-03T13:03:13.643 回答