预计行结束但发现未知令牌

时间:2017-06-17 21:33:50

标签: terminal ffmpeg applescript

好的,经过几天的搜索,我在这里。我是ffmpeg,applescript和terminal的新手。

我想使用ffmpeg批量转换任何文件夹中的一组选定文件。我通过在文件夹位置打开终端并使用以下代码成功完成了此操作:

for f in *.flv; do ffmpeg -i "$f" -acodec libmp3lame -b:a 256k "${f%.flv}.mp3" && rm "$f"; done

找到所有flv文件,并将其转换为256位速率mp3,然后删除原始文件。

现在我希望它更加自动化,所以我研究了创建服务。我尝试通过automator运行一个苹果脚本,我希望它在文件夹位置打开终端然后运行代码来转换文件。这是我尝试的代码:

tell application "Finder" to set currentFolder to target of front Finder window as text
set theWin to currentFolder's POSIX path

tell application "Terminal"
    if not (exists window 1) then reopen
    activate
    do script "cd " & quoted form of theWin & ";clear" in window 1
    tell application "Terminal"
        do script "for f in *.flv; do ffmpeg -i "$f" -acodec libmp3lame -b:a 256k "${f%.flv}.mp3" && rm "$f"; done"
    end tell
end tell

代码的第一部分在文件夹位置打开终端就好了。但是当我使用ffmpeg代码添加部件时,它会崩溃。错误显然是“$”,这些是错误,错误信息显示“预期的行结束,但发现未知令牌”。请寻求一些帮助。我需要“$”,因为这些是使循环适用于重命名文件等的原因。

1 个答案:

答案 0 :(得分:0)

使用\"

传递字符串时必须转义引号

此行变为:     做脚本" for f in * .flv;做ffmpeg -i \" $ f \" -acodec libmp3lame -b:256k \" $ {f%。flv} .mp3 \" &安培;&安培; rm \" $ f \&#34 ;;完成"