问题标签 [osascript]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1006 浏览

python - 从 python 和 launchd 启动 osascript

这是我的小程序的要点

一个python脚本,它检查某个目录中是否有新文件(电影文件)并相应地更新sqlite3数据库,从而将要处理的文件排队。使用 launchctl 每分钟运行一次。

另一个使用 HandBrake 命令行界面执行转换文件的实际处理的 python 脚本。还使用 launchctl 每分钟运行一次。

在第二个脚本中,一旦转换完成,我想启动一个applescript,它将文件导入iTunes,并带有某些元数据。

因此,目录中的新电影文件 -> 文件被排队 -> 文件被转换 -> 文件被导入 iTunes。

我遇到的问题是applescript部分。如果我通过终端运行我的第二个 python 脚本(转换然后导入的那个),一切都会顺利运行。该文件被转换,然后 applescript 将其导入 iTunes。但如果是启动脚本的launchctl,它似乎正在跳过applescript部分。

这是python中的applescript

还有applescript(为简单起见,我删除了一些部分)

我尝试过使用 subprocess.call(cmd)、os.system(cmd) 和 subprocess.Popen(cmd)。

问题似乎是当使用launchctl 启动那个非常python 脚本时,您无法从python 启动osascript。

有人有解释或解决方法吗?

谢谢

0 投票
2 回答
899 浏览

macos - 如何使用 AppleScript 将 Caps Lock 键切换为 Ctrl 键

我似乎无法弄清楚如何使用 Applescript 选择正确的按钮。我开始学习 vim 并希望能够在 Caps Lock 和 Ctrl 之间切换 Caps Lock 键。我已经标记了我需要完成的步骤。

我找到了(这篇文章),但它似乎有点 hacky。也许这是它应该的方式,但它显示了系统偏好。每次我使用它时的窗口,不像(此代码)切换fn键并且工作无缝。

有人可以提供一些建议吗?

这是我的代码:


这是修改器键屏幕截图:

在此处输入图像描述

在此处输入链接描述 http://imageshack.us/a/img833/474/o5co.png

0 投票
1 回答
3625 浏览

macos - 在 OS X 10.9.2 中,命令: osascript -e 'tell application "System Events" to keystroke "Honk" 将 'a' 添加到所有键入字符串的末尾

好吧,我的意思是,标题几乎说明了一切。我正在使用Python通过

到 10.9 终端。使用 osascript 将击键传递给应用程序,在 10.8 及更低版本中,此命令运行良好。但是现在我在 10.9 中使用它来输入应用程序,并且我在每种类型中都添加了一个“a”。

例如,我的程序以插入模式启动 crontab:

但是,使用上面的 osascript 命令后,会产生

这也发生在类似的命令中

(键码 52 是回车键,但奇怪的是,键码 53(Escape 键)似乎不会出现这种情况)

虽然我可以通过 osascript 传递退格键,但额外的“a”会导致启动命令等问题,不能简单地退格。如何避免、解决或以其他方式解决此问题?我已经广泛搜索,找不到适用于 10.9 的替代命令。

0 投票
2 回答
446 浏览

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

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

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

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

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

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

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

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

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

非常感谢您的建议。

0 投票
2 回答
536 浏览

python - Python使用osascript将文件路径变量传递到Applescript

我正在尝试将文件路径从 Python 传递到 n Applescript,不知道如何实现它。下面的代码显示了工作 Applescript 代码,它提示打开一个或多个文件,然后重新分配音频通道,保存并关闭。我不想提示输入一个或多个文件,而是想将文件路径传递到 osascript Applescript,我已经设置了参数,但不知道如何让它工作。

0 投票
2 回答
529 浏览

c++ - 如何使用可以作为 NSAppleScript 运行的 if else 条件生成 osascript

我正在尝试启动一个应用程序并通过 applescript 在其中打开一个文件。我可以通过 Apple Script Editor 做到这一点。这是我写的脚本:

如果应用程序在后台运行,单独启动无法将其带到前台(在脚本编辑器上方)。如果应用程序未运行,则激活无法显示启动画面。这就是为什么,我使用机器人启动和激活。

该脚本工作正常。但我需要我的 c++ 程序中的脚本。应用程序路径和文件路径将在运行时决定。所以我将脚本生成为 NSAppleScript 并执行脚本。生成的 NSApplescript 如下所示:

以上所有代码都在一行中,为了便于阅读,我将其打破。我收到一条错误消息variable e is not defined。这没有被执行。

我用来生成这个脚本的代码是:

我按照 user309603 的建议在 -e 之前添加了空格。现在我收到一个新错误:

错误“266:266:语法错误:预期行尾等,但发现脚本结尾。(-2741)”编号 1

0 投票
2 回答
2049 浏览

terminal - 终端 Applescript 无法逃脱报价

' '尝试在我的 osascript 命令中包含引号时遇到了一个奇怪的问题。

如果我尝试转义一个正常的可转义字符,它可以正常工作。示例:osascript -e 'tell app "Finder" to display dialog "Te\\st"'从 Finder 中弹出一个对话框,其中包含文本Test

但是,当我在写出完整的句子时尝试使用撇号时,就会出现问题。示例:osascript -e 'tell app "Finder" to display dialog "Te\'st"'当我运行它时,我只剩下没有对话框,终端中的文本输入如下所示:

>

据我所知,这无论如何都应该有效,但是,它没有。

0 投票
2 回答
19531 浏览

bash - osascript 使用带有空格的 bash 变量

osascript在 Bash 中使用通过 Apple Script 在通知中心 (Mac OS X) 中显示消息。我正在尝试将文本变量从 Bash 传递给脚本。对于没有空格的变量,这很好用,但不适用于带有空格的变量:

定义

并使用

有效,但使用

产量

我需要改变什么(我是新手)?谢谢!

0 投票
1 回答
2372 浏览

macos - 等到某个应用程序退出,然后启动另一个应用程序

在 OS XI 上,想要执行一个 osascript 命令,该命令等待直到由其完整 .app 路径指定的某个应用程序退出,然后启动另一个应用程序,例如使用/usr/bin/open -n /Applications/MyApp.app.

如何实现等待应用退出?

0 投票
1 回答
473 浏览

python - 使用 bash -c 运行 osascript

我正在开发一个 Sublime Text 插件(Python),我有一些 shell 脚本是它的一部分。由于 Package Control 为您提供压缩包,因此这些脚本不能作为 zip 文件中的文件运行,因此我将它们存储为字符串并使用 subprocess.Popen 和 bash -c 运行它们。该脚本的 Mac 版本需要 osascript,我无法从字符串运行它。脚本的 osascript 部分如下(一切正常之前):

到目前为止,我已经成功地实现了第一个activate语句,osascript -e 'tell application "Terminal" to tell window 1 to activate';但是第二个语句给我带来了很多麻烦,主要是由于所有的引号。我一直在"""triple quote"""为我的字符串使用 Python 格式。我得到的最远是这样的

但我得到类似“83:87:语法错误:标识符不能在这个“”之后。(-2740)" 和其他同样非特定的错误。有谁知道格式化第二条语句以与 bash -c 一起使用的正确方法(或者更好的是,一种更简单的运行方法)?