我有 2 个 applescripts...一个称为“App”,一个称为“Shell”。我希望能够在“Shell”脚本中引用“App”脚本的名称。到目前为止我发现的是,如果“Shell”脚本读取其中包含 me 的任何内容,它似乎引用了自身,而不是“App”脚本。
-- App.scpt
set appName to name of me
--Shell.scpt
tell application "System Events"
set appScript to (load script file (POSIX file "/Path/To/App.scpt"))
run appScript
return appName
end tell
我尝试了上面所写内容的不同替代方案,结果如错误、缺失值或“Shell”,这是不正确的......任何帮助将不胜感激!
经过深思熟虑,我决定走以下路线,并添加额外的“path to me”命令以供参考...
-- App.scpt
try
set appName to appName
set appPath to appPath
on error
set appName to name of me
set appPath to path to me
end try
--Shell.scpt
tell application "System Events"
set appPath to (posix file "/Path/To/App.scpt" as alias)
set appName to name of appPath
run (load script file appPath)
end tell
由于 Shell.scpt 已经知道 App.scpt 的路径(因为它需要加载它),因此我采用了简单的选项来引用此名称和路径。
App.scpt 中的“on error”语句通过使用 Shell.scpt 中的详细信息(如果可用)来工作,如果它们不可用,则恢复引用“me”命令。
在 Shell.scpt 中,我将所有内容都包装在tell块中,因为需要“系统事件”来获取文件名,而且这样看起来也更整洁......
我可以使用我概述的内容向此 Shell.scpt 添加许多不同的 App.scpt 示例,现在一切都应该按预期工作,变量按其应有的方式返回,并且“me”命令被正确引用。