2017-06-17 68 views
0

好吧,经过几天的搜索,我在这里。我是ffmpeg,applescript和终端的新手。预计行结束,但发现未知的令牌

我想使用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代码添加零件时,它会崩溃。错误显然是用“$”表示,错误信息是“期望的行结束,但发现未知的令牌”。请寻求一些帮助。我需要“$”,因为这些是循环为重命名文件等工作的原因。

回答

0

你当你通过使用\字符串逃过引号“

此行变成了: 做剧本”在*。FLV F;做ffmpeg -i \“$ f \”-acodec libmp3lame -b:a 256k \“$ {f%.flv} .mp3 \”& & rm \“$ f \”;完成“

+0

完美地工作!我读了类似的东西,但我把斜杠放在错误的地方,谢谢。 –