將目錄中的所有檔案重新命名為連續的預設值

將目錄中的所有檔案重新命名為連續的預設值

我在子目錄 ( ) 中有一組 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 應該執行您需要的命令,根據需要調整路徑:

  1. 在「父」目錄(例如 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"
    }
    
  2. 在父目錄下建立一個名為「sibling」的目錄,例如「C:\parent\sibling\」。

  3. 在命令提示字元下運行:

    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++
}

相關內容