サブディレクトリ ( mayor
) に一連の mp3 ファイルがあり、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++
}