WINDOWSファイル名の末尾に文字を一括追加する方法

Windowsで特定フォルダ配下全てのファイル名の末尾に指定の文字列を追記したい場合、PowerShellを使えばワンライナーで実現可能です。

ただし、今回ご紹介するコマンドは「拡張子が同じファイルのみ」という条件付きです。

コマンドは以下になります。

	
Get-ChildItem | Rename-Item -NewName {$_.Name -replace '\.拡張子$','追加したい文字列.拡張子'}

変更箇所は「.拡張子」と「追加したい文字列.拡張子」の2か所です。例えばカレントディレクトリの全てのテキストファイル(.txt)の末尾に文字列「_example」を追記したい場合、以下のコマンドをPowerShellで実行します。

	
Get-ChildItem | Rename-Item -NewName {$_.Name -replace '\.txt$','_example.txt'}

「Get-ChildItem」はパスを省略した場合カレントディレクトリが対象になるので、必ず一括変更したいフォルダまで潜ってコマンドを実行してください。

正規表現について

正規表現を理解していなくても上記のコマンドを実行すれば末尾への文字列一括追加は実現できますが、気になる方のために補足しておきます。

「\.拡張子$」の「\」は直後の正規表現記号をエスケープします。

「. (ドット)」も正規表現記号の一つであり、「任意の1文字」を意味します。「\.」とすることで、ドットを正規表現記号ではなく文字として扱うようにしています。

エスケープしない場合、任意の1文字なので「.txt」だろうと「ztxt」だろうと一致してしまいます。

「$」は行の終わりを意味します。「$」が無い場合、文字列内のすべての「.拡張子」が置換されます。

そうそう無いとは思いますが、例えば「hoge.txt.txt」というファイルがあった場合、「\.拡張子$」ではなく「\.拡張子」で置換すると「hoge.txt_example.txt」とならず「hoge_example.txt_example.txt」になってしまうということです。

まとめ

特定フォルダ内のファイル名の末尾に文字を一括追加したい場合、PowerShellで当該フォルダまで潜った後に以下のコマンドを実行しましょう。

	
Get-ChildItem | Rename-Item -NewName {$_.Name -replace '\.拡張子$','追加したい文字列.拡張子'}

また、ファイル名先頭への一括追記もPowerShellであればワンライナーで実現できます。コマンドは以下の記事に記載しています。

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)