【问题标题】:Applescript: system-wide global variable accessible by all scriptsApplescript:所有脚本都可以访问的系统范围的全局变量
【发布时间】:2014-05-14 12:46:47
【问题描述】:

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

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

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

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

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

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

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

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

非常感谢您的建议。

【问题讨论】:

    标签: applescript acrobat osascript preflight


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      如果您只有一个参数需要跟踪,一个简单的建议是在每台机器上的已知位置都有一个文本文件。文本文件的唯一内容是机器参数。我喜欢使用 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"
      

      【讨论】:

      • 感谢您的提示。由于整个系统是使用git分发的,所以最好在git目录范围内。为了让事情更开放,plist 方法有一些优势。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-08-16
      • 1970-01-01
      • 2011-04-14
      • 1970-01-01
      • 1970-01-01
      • 2013-12-25
      • 1970-01-01
      相关资源
      最近更新 更多