ディレクトリ内のすべてのファイルの名前をデフォルトの連番に変更する

ディレクトリ内のすべてのファイルの名前をデフォルトの連番に変更する

サブディレクトリ ( 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 は必要なコマンドを実行するので、必要に応じてパスを調整してください。

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

関連情報