Cron 作业和剪贴板

Cron 作业和剪贴板

当我从 cron 作业运行 Pbpaste 时,它​​似乎没有按预期工作。

我有一个 applescript,可以在预览中打开 PDF 文件并向其发送复制命令,然后关闭预览。接下来我想将其粘贴到文件中,pbpaste > pasta.txt。当我以自己的身份运行它时,一切都运行良好。

但是,如果我将其作为 crontab -e 中的任务,它确实可以正确运行,甚至创建输出文件,但内容为空。就好像运行所处的上下文对剪贴板有不同的概念。

我的 crontab 是这样的:

* * * * * cd /Users/bemmu/Public;osascript yeah.script

是的,脚本是这样的:

do shell script "open tiliote.pdf"
delay 2
tell application "Preview"
    activate
    delay 2
    tell application "System Events" to keystroke "a" using {command down}
    delay 2
    tell application "System Events" to keystroke "c" using {command down}
    delay 2
    tell application "System Events" to keystroke "q" using {command down}
    delay 2
end tell
do shell script "pbpaste > pasta.txt"

预期结果是 pasta.txt 将包含文本形式的 PDF 文件,如果我手动运行此脚本,就会发生这种情况。但是,如果 cron 运行它,pasta.txt 会被创建但不会包含任何内容(大小为 0)。

我可以看到,从 cron 运行时复制肯定成功,因为我稍后可以自己粘贴。只是 pbpaste 似乎无法从 cron 运行。

答案1

为什么不抛弃脚本并使用 Automator 工作流程(或编译的应用程序),因为他们有专门的方法将 PDF 中的文本提取到文本文件中。

在此处输入图片描述

您还可以尝试放弃 Cron 并通过 LaunchAgent 运行脚本。示例:

〜/图书馆/ LaunchAgents / us.peelman.Terminal.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Disabled</key>
    <true/>
    <key>KeepAlive</key>
    <true/>
    <key>Label</key>
    <string>us.peelman.TerminalLauncher</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Applications/Utilities/Terminal.app/Contents/MacOS/Terminal</string>
    </array>
</dict>
</plist>

相关内容