【PowerShell】ファイル名を一括で変更する方法

この記事では、Windows環境において、PowerShellを使用してファイル名を変更するテクニックを紹介していきます。

PowerShellを使うと、複数のファイル名を一度に変更することができます。PowerShellはWindowsに標準で搭載されているツールなので、改めてソフトウェアをインストールする必要はありません。

ファイル名をまとめて変更する3つのケースを例にとって、使用するPowerShellのコードを紹介し、その内容を解説いたします。

取り上げるケースは、以下の3つです。

  • ファイル名に含まれている「2023」を一括で「2024」に変更する。
  • ファイル名に含まれている「_」を一括で削除する。
  • ファイル名に含まれているアルファベットの小文字を一括で大文字に変更する。

では、早速最初のケースから見ていきましょう。

ケース1:ファイル名に含まれている「2023」を一括で「2024」に変更する。

このケースでは、ファイル名に含まれている「2023」を「2024」に変更します。

まずは、使用するコードを見ていきましょう。

Get-ChildItem -File | Where-Object { $_.Name -match '2023' } | Rename-Item -NewName { $_.Name -replace '2023', '2024' }

名前を変更したいファイルが格納されているフォルダでPowerShellを起動し、上記のコードをコピー&ペーストして使用してください。

実行手順

実際に手順を実施した場合の動きは、以下のようになります。

①名前を変更するファイルが格納されたフォルダを開く。

コード実行前の状態

②Shiftキーを押しながら右クリック→「PowerShellウィンドウをここで開く」を選択する。

ファイルが格納されているフォルダでShiftキーを押しながら右クリック→「PowerShellウィンドウをここで開く」を選択

すると、以下のような画面が開きます。

PowerShellウィンドウが開いた状態

③コードをコピーし、PowerShellウィンドウ上にて右クリックでペーストする。

表示されたウィンドウへコードをコピー&ペースト

④Enterキーを押してコードを実行する。

コードを実行

コードを実行すると、ファイル名が以下のように変更されます。

コード実行後の状態

実行手順は以上です。では、次にコードの解説をします。

コード詳細

実行手順のところで記載していたコードを再掲します。

Get-ChildItem -File | Where-Object { $_.Name -match '2023' } | Rename-Item -NewName { $_.Name -replace '2023', '2024' }

Get-ChildItemコマンドは、カレントディレクトリ(現在いるフォルダ)配下のファイル一覧を取得するためのコマンドです。取得された一覧は、パイプ(「|」)を使用して、後続のWhere-Objectコマンドへと渡されています。

Where-Objectコマンドを使用して、Get-ChildItemコマンドで取得された一覧から、カッコ内で指定した条件を満たすものだけを抽出しています。カッコの中で、「2023」という文字列を含むもの、という条件を指定しています。

Rename-Itemコマンドはファイル名を変更するコマンドです。「-replace」コマンドを使用して、ファイル名の中にある「2023」を「2024」に置き換えています。

ケース2:ファイル名に含まれている「_」を一括で削除する

次に、ファイル名に含まれている「_」(アンダーバー)を一括で削除する方法を紹介します。

使用するコードは以下の通りです。

Get-ChildItem -File | Where-Object { $_.Name -match '_' } | Rename-Item -NewName { $_.Name -replace '_' , '' }

コードを実行する手順はケース1と同様なので、そちら(【実行手順】)を参照してください。

簡単にコードの解説をします。

Get-ChildItemとWhere-Objectコマンドの意味は、ケース1で解説しているのと同様です。ケース2のWhere-Objectコマンドでは、「_」(アンダーバー)を含むファイル名だけを抽出するよう条件が指定されています。

Rename-Itemコマンドの中では、「_」(アンダーバー)を「」(空文字)に置き換えています。これによって、「_」(アンダーバー)を削除することができます。

ケース3:アルファベットの小文字を大文字に置き換える

最後に、アルファベットの小文字を大文字に置き換えるコードを見ていきましょう。

Get-ChildItem -File | Rename-Item -NewName { $_.Name.ToUpper() }

実行手順はケース1 (【実行手順】)を参照してください。

Get-ChildItem、Rename-Itemコマンドの機能はケース1で解説した通りです。

ケース3では、Rename-Itemコマンドのカッコの中で、大文字変換するための「ToUpper」関数が使用されています。この関数を使用することで、既存のファイル名にある小文字が大文字に変換され、新しいファイル名を生成することができます。

注意点:バックアップをとりましょう。

ここまでで、3つのケースを題材にファイル名を一括で変更する方法を見てきました。

どの方法を使用した場合でも、ファイル数が100個でも1000個でも、すぐにファイル名の変更を終えることができます。

ただ、この方法を使うに当たっては、1点注意すべきポイントがあります。

それは、大量のファイル名を一度に変えて、その内容が間違っていた場合、修正するのが非常に面倒であるということです。

ですので、本記事で紹介した方法を使用する場合には、必ず事前にバックアップを取ってから作業をするようにしましょう。

万が一想定と異なる動きをしたとしても、バックアップがあれば元の状態に戻すことができます。

おわりに

ファイル名の変更は、地味でありながら意外と必要になる作業でもあります。

このような作業を機械化・自動化することで、よりクリエイティブな作業に労力をかけられるようになります。

ぜひ、この記事で紹介した方法を使って、効率化を図っていきましょう。