我在子目錄 ( ) 中有一組 mp3 文件mayor
,我想使用 ffmpeg 轉換每個文件(如下所示ffmpeg -i <input_file> -ar 44100 -ab 128k -f mp3 <output_file>
:),並將結果文件mayor_out
以順序模式儲存在同級資料夾中。我嘗試了一些堆疊的FOR
問題,但沒有人解釋如何在文件/目錄迭代中做到這一點,所以我問了一個新問題。
答案1
好吧,我設法使用這個 .bat 腳本來做到這一點(靈感來自這個答案)
@echo off
cd /D mayor
set _num=1
FOR /R %%X IN (*.mp3) DO call :body %%X
goto :eof
:body
ffmpeg -i %1 -ar 44100 -ab 128k -f mp3 ../mayor_out/YAL_m%_num%.mp3
set /a "_num=_num+1"
goto :eof
pause
答案2
以下 Powershell 應該執行您需要的命令,根據需要調整路徑:
在「父」目錄(例如 C:\parent\)中建立一個名為「ProcessMp3.ps1」的文件,並將下列程式碼新增至其中。
ForEach($i in Get-ChildItem -filter "*.mp3" -Path "C:\parent" ){ ffmpeg -i $i -ar 44100 -ab 128k -f mp3 ".\sibling\$i" }
在父目錄下建立一個名為「sibling」的目錄,例如「C:\parent\sibling\」。
在命令提示字元下運行:
Powershell ./ProcessMp3.ps1
如果順序僅意味著添加 1、2、3 等作為檔案名稱的前綴,則腳本可能如下所示:
$c=1
ForEach($i in Get-ChildItem -filter "*.mp3" -Path "C:\parent" ){
ffmpeg -i $i -ar 44100 -ab 128k -f mp3 ".\sib\$c-$i"
$c++
}