Windowsで、一つのフォルダの中のファイルのファイル名を一括で変更したいときがあります。フリーソフトでそういうことをやってくれるものもありますし、玄人的な方法なら本当にいろんな方法があります。
でも、Windows10で普通にワードとかエクセルを使ったりしているくらいだと、玄人的な方法と言われても困ってしまうこともあると思います。そこで、エクセルを 使うことで、やや応用性の高い形で、一括でできるけどそんなに難しくない(かも)、という方法をちょっとご紹介します。
基本的に、ファイル名の変更というのは、Windows10だとパワーシェルにコマンドを打ち込むのが標準的にできる方法の基本です。たとえば以下のように、
> mv test2.text test3.txt
というコマンドを入力すればできます。ですので、一つのフォルダの中のファイル名を一括変更したい場合は、
mv test2.text test3.txt mv test21.text test31.txt mv test23.text test33.txt
というテキストを作ってパワーシェルに貼り付ければ、それぞれがコマンドとして機能することになります。そこで、このような テキスト(コマンド一覧)を作成することを目指してみましょう。
最初に必要なのは、変換したいファイル名の一覧の取得です。ここでは、 ファイル名を1行に一つずつ取得する必要があります。このための方法は色々あるのですが、簡単な 方法として、パワーシェルを使う方法があります。その場合、以下のように 「対象ファイルが入っているフォルダを開いてそこでシフトを押しながら右クリック」してください。そして、「Powershellウインドウをここで開く」を選んでください。
ここで、以下のコマンドを入力してみてください。(以下のような場合、「ls」と入力した後にキーボードのEnterキーを押してください)
> ls
そうすると、以下のようにファイル名の一覧が表示されるはずです。ここで、名前を変更したいファイルのファイル名が一覧されるかどうか確認してみてください。
変更したいファイルの名前の一覧がでてきいたら、先に進みましょう。ここでは、ファイルの最終変更日付なども表示されていてちょっと使いにくいです。そこで、 以下のコマンドを使ってファイル名のみを一覧表示させます。
> ls -Name
そうしましたら、このファイル一覧をとりあえずテキストエディタなどにコピペします。
ここで注意しなければいけないのは、これらのファイル名では空白(スペース)を含んでいます。 スペースを含んでいる場合は「"」でファイル名を囲む必要があります。つまり
"スクリーンショット 2021-02-12 181746.png"
こういう感じです。
ここまでくれば、テキスト変換が得意な人ならテキストエディタでもできるかもしれませんが、そういうのもあんまり得意でない人は、エクセルでこういうデータを作るとちょっと簡単です。 繰り返しになりますが、目標は、以下のような文字列を作成してパワーシェルに貼り付けることです。
mv "スクリーンショット 2021-02-12 181746.png" "sc-2021-02-12 181746.png"
さて、これを以下のようにエクセルに貼り付けまして、変換後文字列も作成して、以下のようにしてみます。 元の文字列はB列で、A列には"mv " (mvの後ろに半角スペースを忘れずに)を入れておきます。C列の変換後文字列は、 たとえばテキストエディタなどで作成してから貼り付けてもいいですし、エクセルの検索置換機能で 作成してもいいでしょう。
それから、ファイル名(B列かC列)文字列に空白が入っている場合は、ダブルクオーテーションで囲む必要がありますが、これはテキストエディタで やってもいいですが、エクセルでもできます。エクセルだと以下のような関数をセルに書くことになります。
=""""&B1&""" "
最終的に、これをパワーシェルに貼り付けるわけですが、このまま貼り付けるとうまくいきません。これをうまく行うためには、 以下のような関数(=A10&C10&B10)で一つのセルにまとめて、それをパワーシェルに貼り付けるとよいです。
貼り付けてうまくいくと、以下のようになります。
このやり方は応用範囲が非常に広いので、プログラミングは覚える気はないけどWindowsで何か便利な小中規模の一括処理をしてみる際にはぜひ色々ご活用ください。