PowerShellでファイル名を一括で変更(連番で桁埋め)

連番の付いたファイル名にしたくて調査しているときの覚書。
専用ソフトとか使わずにPowerShellで出来るだろうとやってみた。

環境: Windows 11 Pro

参考サイト


実行したPowerShellコマンド。
PS > ls | sort Name | % {$i = 1} {mv $_.Name ("{0:000}.jpg" -f $i++)}

一覧取得 > 名前でソート > 数値3桁で桁埋めしたjpgファイルに名前を変更。

ただしパワーポイントで出力した場合、ファイル名が「スライド1、スライド10...スライド2」のようにズレてしまうので、その際は更新順で並び替える。
PS > ls | sort LastWriteTime | % {$i = 1} {mv $_.Name ("{0:000}.jpg" -f $i++)}


またGhatGPTに聞いてみたのが下記。

PowerShellで連番の付いたファイル名に一括変更するコマンドを教えてください。

$files = Get-ChildItem "C:\TestFolder" -Filter *.txt
$i = 1
foreach ($file in $files) {
    $newName = "{0}_{1}.txt" -f $i, $file.BaseName
    Rename-Item -Path $file.FullName -NewName $newName
    $i++
}

また「一行で実行できる形式で教えてください。」と言えば教えてくれる。
桁埋めの指示を含めれば、{0:D3}を含めて出力してくれる。


【関連記事】