PowerShellでファイル名を一括変更する方法|初心者でもすぐ使えるリネーム術

PowerShell

「大量のファイル名を一つずつ変更するのが面倒…」
「ファイル名に共通のキーワードを追加・削除したい」
そんなときこそ、PowerShellを使った一括リネームが便利です。
この記事では、PowerShellでファイル名を一括変更する方法をわかりやすく解説します。

PowerShellでできること一覧

PowerShellでは、以下のような柔軟なリネーム操作が可能です。

  • ファイル名にプレフィックスやサフィックスを追加
  • ファイル名の一部を置換(例:「ver1」→「ver2」)
  • 拡張子を一括変更
  • 連番の追加(file1.txt, file2.txt など)

それでは、実際の使い方を見ていきましょう。

ファイル名の先頭に文字列を追加する

$folder = "C:\Users\YourName\Documents"

Get-ChildItem -Path $folder -File | ForEach-Object {
$newName = "NEW_" + $_.Name
Rename-Item $_.FullName -NewName $newName
}

解説

  • Get-ChildItem でフォルダ内のファイル一覧を取得
  • ForEach-Object で1つずつ処理
  • “NEW_” + $_.Name でファイル名の先頭に文字列を追加
  • Rename-Item で新しい名前に変更

report.docxNEW_report.docx

ファイル名の一部を置換する

$folder = "C:\Users\YourName\Documents"

Get-ChildItem -Path $folder -File | ForEach-Object {
$newName = $_.Name -replace "old", "new"; Rename-Item $_.FullName -NewName $newName
}

解説

  • -replace はPowerShellの置換演算子
  • “old” を “new” に置き換えます

old_report.txtnew_report.txt

拡張子を一括変更する

$folder = "C:\Users\YourName\Documents"

Get-ChildItem -Path $folder -Filter "*.txt" | ForEach-Object {
$base = [System.IO.Path]::GetFileNameWithoutExtension($_.Name)
$newName = "$base.csv"
Rename-Item $_.FullName -NewName $newName
}

log1.txtlog1.csv

拡張子の変更も簡単にできます。

連番をつけてリネームする

$folder = "C:\Users\YourName\Documents"
$count = 1

Get-ChildItem -Path $folder -File | Sort-Object Name | ForEach-Object {
$ext = $_.Extension
$newName = "file_$count$ext"
Rename-Item $_.FullName -NewName $newName
$count++
}

結果例

  • data1.csv → file_1.csv
  • data2.csv → file_2.csv

ファイルを順番に並べて、連番付きで名前をつけ直すスクリプトです。

注意点とトラブル対策

上書き注意!

同じファイル名が存在すると上書きエラーになります。スクリプトを実行する前に、バックアップを必ず取りましょう

日本語ファイルもOK?

PowerShellはUTF-8に対応しているので、日本語のファイル名も問題なく扱えます。 ただし、環境によって文字化けすることがあるので、念のため日本語名は注意して扱ってください。

まとめ

PowerShellを使えば、ファイル名の一括変更が高速かつ正確に行えます。手作業での面倒な作業も、スクリプト1本であっという間です。
今回紹介したスクリプトを応用すれば、業務効率が格段にアップします。日々の作業にぜひ取り入れてみてください。

 

 

 

 

 

 

 

タイトルとURLをコピーしました