【IT】Windowsでファイル名の一括変更を「メモ帳」「Excel」で作ったバッチで行う方法

ファイル名の一括変更をExcelとメモ帳で作るバッチで行う

ファイル名の変更

Windowsを使っていると、ファイル名を変更する機会がよくあると思う。

1個や2個なら苦にならないが、50個や100個をまとめて変更するのは大変だ。

ファイル名を変更

一応エクスプローラーからの一括変更もできなくはない。

全選択して「名前の変更」を押す
変更後のファイル名を入力

ただこの方法だと、元々付いていたファイル名は無視され新しい名前に「 ~ (1) 」のような連番がくっつく結果になる。

一括変更したファイル名

それでOKな場合もあるけど、もう少し細かく設定したいこともあるだろう。

選択肢として「フリーウェアを探す」「自作プログラムを組む」などいくつかあるが、今回は初心者向けの方法を考えてみた。

バッチでファイル名を一括変更

バッチというのは命令を束ねたファイルだ。

Windowsは、その前身であるMS-DOS時代からコマンド操作ができるが、その話に触れると長くなるのでここでは省略。

習うより慣れろで、まずはメモ帳を立ち上げて下記1行を入力し「!dir.bat」という名前でデスクトップに保存しよう。

dir /b > !dirout.txt
メモ帳にdirコマンドを入力して保存

次にテスト環境の作成。

デスクトップに「テスト」というフォルダを作り、中に「abc01.txt」~「abc05.txt」の5ファイルを作成する。(中身は空でOK)

テストフォルダを作成

作成できたら、先ほどメモ帳で作った「!dir.bat」をその中に入れてダブルクリックで実行。

テストフォルダにコピーしてダブルクリックで実行

「!dirout.txt」が作られるはずだ。

ちなみにファイルの先頭に「!」を付けているのは昇順ソートした時一番上に来るからだ。その名前でなくても動作に問題はない。

それでは「!dirout.txt」を開いてみよう。

dirで出力したファイルを開く

中身はこのフォルダ内のファイル名一覧。

「!」が付いていないもの(ファイル名を変えたいもの)を選んでコピーしよう。

ファイル名の行を選択してコピー

Excelを立ち上げてB1に貼り付ける。

Excelを立ち上げてB1に貼り付け

A1に「ren」と入力して下までコピー。

A1に「ren」と入力して下の行にもコピー

「ren」というのはrenameと同じコマンドで次のように指定する。

ren  [変更前のファイル名]  [変更後のファイル名]

という訳で、C列には変更後のファイル名を入れることになる。

例としてB列をそのままコピーし、C列だけを範囲選択してリボンの「検索と置換」で文字列を置き換えてみよう。

B列からC列にコピーして文字列を置換

このようになる。

C列が完成

C列の入力方法は自由なので、置換ではなく直接文字を打ち込んでも良い。

これで準備は整ったので全て選択してコピーしよう。

全て選択してコピー

再びメモ帳を立ち上げて貼り付け「!ren.bat」という名前でデスクトップに保存する。

メモ帳に貼り付けて保存

それを先ほどのテストフォルダに移動し、ダブルクリックで実行。

テストフォルダにコピーして実行

全てのファイル名が「abc~」から「xyz~」に変わったはずだ。

あとは作業用のファイル(先頭に「!」が付いているもの)を削除すれば完了。

作業ファイルは削除して完了

Windowsなら大抵メモ帳とExcelは入っているだろうから、覚えておけばいつでもファイル名の一括変更ができるだろう。

コマンドプロンプトならもっと簡単

実はこれらの作業はコマンドプロンプトで実行すればもっと簡単にできる。

ディレクトリを変更して「ren」をワイルドカードで実行するだけ。

cd  desktop\テスト

ren  abc*  xyz*
コマンドプロンプト

ただ、ワイルドカードにしても正規表現にしても、曖昧な知識で使うと思わぬ失敗をしかねない。(私には多分無理)

その点、Excelなら変更後のファイル名が目視できるし数式を用いることもできる。

例えばB列(元ファイル名)の先頭に何か付けるなら「=〇〇 & B1」とする感じだ。

B列の文字列先頭に何かを付ける
先頭に@が付いた結果

拡張子を分けて扱うのもアリ。

ファイル名と拡張子を別々に扱う

今回の方法が実用的かと言われると微妙だけど、「こういう方法もあるんだ」という発想のきっかけになれば幸いだ。