2017-06-17 34 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

完美地工作!我讀了類似的東西,但我把斜槓放在錯誤的地方,謝謝。 –

相關問題