PowerShell: ファイル名・フォルダ名を変更(リネーム)

PowerShellでファイル名やフォルダ名を変更する作業は、システム管理やファイル整理の効率を大幅に向上させます。Rename-Itemコマンドレットを使用することで、単一のファイルやフォルダだけでなく、複数のアイテムを一括で変更することも可能です。

この記事では、PowerShellを使用してファイル名とフォルダ名を変更する方法について解説します。

ファイル名を変更

PowerShellでファイル名を変更するには、Rename-Itemコマンドレットを使用します。基本的な構文は以下の通りです:

Rename-Item ファイルパス 新しいファイル名

例えば、「D:\temp\test.txt」というファイルを「test2.txt」に変更する場合は、次のように記述します:

Rename-Item D:\temp\test.txt test2.txt

カレントディレクトリ内のファイルを変更する場合は、ファイル名のみを指定すれば十分です:

Rename-Item test.txt test2.txt

注意点:指定したファイルが存在しない場合はエラーが発生します。エラーを回避するには、Test-Pathコマンドレットを使用してファイルの存在を事前に確認することをお勧めします[1]。

複数のファイル名を変更

複数のファイル名を一括で変更するには、Get-ChildItemコマンドレットとRename-Itemを組み合わせて使用します。さらに、-replace演算子を使用することで、ファイル名の一部を変更することができます[1]。

例えば、特定のディレクトリ内のすべての.txtファイルの拡張子を.iniに変更する場合:

Get-ChildItem d:\temp\*.txt | Rename-Item -NewName { $_.Name -replace ".txt",".ini"}

また、ファイル名に連番を付与する場合は以下のようなコマンドを使用できます[2]:

ls -File | sort Name | % {$i = 1} { $Newname = "title_" + $i.tostring("000")+$_.extension; rename-item $_ $Newname; $i++ }

この例では、ファイル名の先頭に「title_」という文字列と3桁の連番を付与しています。

フォルダ名を変更

フォルダ名の変更も、ファイル名の変更と同様にRename-Itemコマンドレットを使用します。構文は以下の通りです:

Rename-Item フォルダパス 新しいフォルダ名

例えば、「D:\temp\f1」というフォルダを「f2」に変更する場合:

Rename-Item D:\temp\f1 f2

ファイル名の変更と同様に、カレントディレクトリ内のフォルダを変更する場合はフォルダ名のみを指定すれば十分です[1]。

注意点:フォルダ名の変更時も、指定したフォルダが存在しない場合はエラーが発生します。また、フォルダ内にファイルが存在する場合でも、フォルダ名の変更は可能です。

PowerShellを使用したファイル名やフォルダ名の変更は、単純な1対1の変更から複雑な一括変更まで幅広く対応できます。正規表現を活用することで、より柔軟な名前変更が可能になります。ただし、重要なファイルやフォルダを扱う際は、事前にバックアップを取るなど、慎重に作業を進めることをお勧めします。

PowerShell