一瞬で完了!Windowsで複数ファイルの拡張子を一括変換する方法【コマンドプロンプト・PowerShell】

Windows

数多くのファイルの拡張子を一括で変更する必要がある時、どうしますか?マウスを使って一つ一つ手作業で変更するのは時間がかかり、効率的でもありません。そんな時、WindowsのコマンドプロンプトやPowerShellを活用することで、手間を省き、短時間で大量のファイルの拡張子を一括で変更することが可能となります。

WindowsのコマンドプロンプトとPowerShellで複数ファイルの拡張子を一括変換する方法について解説していきます。

この記事を読むことで、以下を理解できます:

  • Windowsのコマンドプロンプトを使用したファイル拡張子の一括変換方法
  • コマンドプロンプトでの拡張子変更における問題点とその解決策
  • PowerShellを使用した一括変換コマンドの利用方法

コマンドプロンプトを開く

コマンドプロンプトの開き方は何通りかありますが、拡張子を一括で変更したいなら、それらのファイルが配置されたフォルダで開くのが便利です。エクスプローラーで変更したいファイルがあるフォルダを開き、右クリックして「ターミナルで開く」を選びましょう。以下は「ダウンロード」フォルダで開いている例です。

すると、以下のような黒いウィンドウが開きます。最近のバージョンのWindows 10やWindows 11なら、「Windows PowerShell」と表示されているはずです。

この「PowerShell」でも拡張子の一括変換はできるのですが(方法は後述します)、入力するコマンドが複雑になってしまうので、ここでは「cmd」と入力してEnterを押し、コマンドプロンプトに入りましょう。

コマンドで拡張子を一括変換する

ここでは、例として「comic1.zip」~「comic5.zip」を、一括で「comic.cbz」~「comic5.cbz」に変換する手順を紹介します。コマンドプロンプトに入力するのは以下のコマンドです。「ren」は「rename」と書くこともできます。

ren *.zip *.cbz

これは「*.zip」に一致するファイル、つまり「.zip」で終わるファイルの名前をすべて、「.cbz」で終わるよう変更する、という意味になります。ファイルが何百個あっても、すぐに処理は完了します。手作業で変更するよりはるかに効率的です。

コマンドプロンプトにおける「*」の扱いは、LinuxやMacで採用されているbashやzshにおける「*」とは扱いが異なります。特にrenコマンド(renameコマンド)に「*」を使用した場合の挙動はまったく異なります。LinuxやMacも使う人は、混同しないよう注意が必要です。

実行後、エクスプローラーを見ると以下のように「.zip」がすべて「.cbz」に変化しています。

複数の「.」を含むファイル名での問題

この「ren」コマンドを用いた拡張子の一括変換は、ほとんどの場合で問題なく動作します。ただし、ファイル名が複数のピリオドを含む場合(例:file.name.zip)、このコマンドを使用すると、ファイル名の最後のピリオド以降が全て変更されてしまいます。その結果、ファイル名が思わぬ形に変更されてしまう可能性があります(例:file.cbz)。この問題は、PowerShellを用いて回避できます。

PowerShellを使用した拡張子の一括変換

PowerShellとは

PowerShellはWindows 7以降のバージョンに標準で含まれている、強力なスクリプティング機能を持つコマンドラインツールです。PowerShellを使えば、ファイル名に複数のピリオドを含んでいても、一括変換が可能です。

PowerShellを使用した一括変換コマンド

「ターミナルを開く」までの手順は、コマンドプロンプトの場合と同様です。その後「cmd」を実行せず、PowerShellのまま以下のコマンドを実行すれば、拡張子「.zip」のファイルをすべて、拡張子「.cbz」に一括置換できます。こちらの手順なら、ピリオドを複数含むファイルがあっても正しく処理されます。

Get-ChildItem -Filter "*.zip" | Rename-Item -NewName {$_.name -replace '.zip$','.cbz' }

また、以下のようにGet-ChildItemコマンドに「-Recurse」というオプションを追加すれば、カレントディレクトリだけではなくサブディレクトリ以下も探索し、拡張子「.zip」のファイルがあればすべて「.cbz」に置換します。

Get-ChildItem -Filter "*.zip" -Recurse | Rename-Item -NewName {$_.name -replace '.zip$','.cbz' }

コマンドプロンプトよりコマンドが長くなりますが、場合によってはこちらが必要になるでしょう。なお、他のアプリと同様、ターミナルウィンドウにもCtrl+Vで文字列を貼り付けできるので、このページのコマンドをコピーし、貼り付けた後で置換する拡張子を必要に応じて書き換えて実行、ということも可能です。コピペするなら、コマンドの長さは大きな問題ではないでしょう。

注意点と補足

コマンドプロンプトやPowerShellを使った一括置換は、非常に強力ですが、間違えて実行すると必要なファイルを上書きしてしまう、などの「事故」が起こることもあります。なので、操作を行う前に重要なファイルはバックアップしておきましょう。また、コマンドを実行する前に間違いがないか、十分に確認するようにしてください。

まとめ

この記事では、WindowsのコマンドプロンプトとPowerShellを使用して、複数のファイルの拡張子を一括で変更する方法について解説しました。コマンドプロンプトのrenまたはrenameコマンドの簡便さと、PowerShellの強力なスクリプティング機能を活用することで、大量のファイルの拡張子を効率的に変更することが可能です。ただし、その操作には十分な注意が必要です。安全に操作できるように気をつけて使用してください。

Windows
\シェアお願いします/
LFI

コメント

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