Terminal 使用AppleScript向终端发送命令
我有这个ffmpeg命令,我想通过appelscript发送到终端。当我直接在终端中运行它时,它就工作了Terminal 使用AppleScript向终端发送命令,terminal,ffmpeg,applescript,Terminal,Ffmpeg,Applescript,我有这个ffmpeg命令,我想通过appelscript发送到终端。当我直接在终端中运行它时,它就工作了 ffmpeg -i score.mov -i palette.png -filter_complex \ "fps=8,scale=600:-1:flags=lanczos[x];[x][1:v]paletteuse" -f image2pipe -vcodec ppm - | convert -delay 15 -loop 0 -layers Optimize - output39.gif
ffmpeg -i score.mov -i palette.png -filter_complex \
"fps=8,scale=600:-1:flags=lanczos[x];[x][1:v]paletteuse" -f image2pipe -vcodec ppm - | convert -delay 15 -loop 0 -layers Optimize - output39.gif
这不会在scripteditor中编译
tell application "Terminal"
do script "ffmpeg -i score.mov -i palette.png -filter_complex \
"fps=8,scale=600:-1:flags=lanczos[x];[x][1:v]paletteuse" -f image2pipe -vcodec ppm - | convert -delay 15 -loop 0 -layers Optimize - output39.gif"
end tell
我得到“预期的行尾,但找到了标识符”
有人知道该怎么做吗?你很接近,但有一些明确的语法问题 首先,你不必告诉终端 在AppleScript中,shell命令的正确语法是:“do shell script”,后跟命令。请记住,您正在向该函数发送文本,因此请正确地用双\'转义脚本中的“and”和$以及其他内容,以免混淆脚本 为了将来的一致性,我喜欢在我的应用程序开始时将我使用的所有shell应用程序设置为属性:
property grep : do shell script "which grep"
…然后在我的脚本行中回忆它们,但这不是必需的
试试这个:
do shell script "ffmpeg -i score.mov -i palette.png -filter_complex \
\\"fps=8,scale=600:-1:flags=lanczos[x];[x][1:v]paletteuse\\" -f image2pipe \
-vcodec ppm - | convert -delay 15 -loop 0 -layers Optimize - output39.gif"
你很接近,但有一些明确的语法问题 首先,你不必告诉终端 AppleScript中用于shell命令的正确语法是:“do shell script”,后跟命令。请记住,您正在向此函数发送文本,因此请使用双\\正确地转义脚本中的“and”和“$”以及其他内容,以免混淆脚本 为了将来的一致性,我喜欢在我的应用程序开始时将我使用的所有shell应用程序设置为属性:
property grep : do shell script "which grep"
…然后在我的脚本行中回忆它们,但这不是必需的
试试这个:
do shell script "ffmpeg -i score.mov -i palette.png -filter_complex \
\\"fps=8,scale=600:-1:flags=lanczos[x];[x][1:v]paletteuse\\" -f image2pipe \
-vcodec ppm - | convert -delay 15 -loop 0 -layers Optimize - output39.gif"
按照另一个答案中的建议,使用
do shell脚本
,删除行分隔符并用单引号替换字符串中的双引号
do shell script "ffmpeg -i score.mov -i palette.png -filter_complex 'fps=8,scale=600:-1:flags=lanczos[x];[x][1:v]paletteuse' -f image2pipe -vcodec ppm - | convert -delay 15 -loop 0 -layers Optimize - output39.gif"
按照另一个答案中的建议,使用
do shell脚本
,删除行分隔符并用单引号替换字符串中的双引号
do shell script "ffmpeg -i score.mov -i palette.png -filter_complex 'fps=8,scale=600:-1:flags=lanczos[x];[x][1:v]paletteuse' -f image2pipe -vcodec ppm - | convert -delay 15 -loop 0 -layers Optimize - output39.gif"
非常感谢。工作完美:)我只需将完整路径/usr/local/bin/添加到ffmpeg并进行转换以使其正常运行。谢谢。工作完美:)我只需将完整路径/usr/local/bin/添加到ffmpeg并进行转换以使其正常运行。非常感谢Eric!但现在我在这一部分得到了同样的错误:-f image2pipe,而不是任何想法?我讨厌这个。但我想学:)非常感谢你,埃里克!但现在我在这一部分得到了同样的错误:-f image2pipe,而不是任何想法?我讨厌这个。但我想学:)