d:\ffmpeg\bin\ffmpeg.exe -i "%1" -acodec copy "done\%1"
就執行 ffmpeg.bat 檔名.mp4 就可以了,結果有一天因為檔名有空格...
有空格就得用引號 ffmpeg.bat "filename with spaces.mp4",這樣就出問題了,因為連引號都是 %1 的內容,真是讓人哭哭;最終解法..
setlocal
chcp 65001
dir /b %1 > %TEMP%/__file
set /p file=<%TEMP%/__file
del %TEMP%/__file
d:\ffmpeg\bin\ffmpeg.exe -i "%file%" -acodec copy "done\%file%"
重點在 chcp 和 dir /b;因為檔名不一定是 BIG5 能顯示的範圍之內,所以 dir /b 的檔名,不一定是正確的檔名 (dir 給他正確的檔名顯示,然後它回一個錯誤的...),所以要先改用 UTF8,然後利用 dir /b 去引號,就有個沒有引號的檔名可以拿來用了。
真是可喜可賀!
別忘了 WSL!
對,還有 WSL (Windows Subsystem for Linux),在 ffmpeg.bat 同一個目錄下建一個 ffmpeg.sh
#!/bin/sh
file=$1
dir=`dirname $(readlink -fn $0)`
cd $dir
/mnt/d/ffmpeg/bin/ffmpeg.exe -i "$file" -acodec copy "done/$file"
還活不到一天的 ffmpeg.bat,就改成:
wsl /mnt/d/Videos/這是秘密/ffmpeg.sh %1
ffmpeg 可以在 Linux 裡面裝一個來用,我是用 Windows 的,因為 Linux 裡面的跑一半就 coredump,沒有查原因,就直接改用 Windows 版本的了。
沒有留言:
張貼留言