Windowsのエクスプローラーには自動採番機能があることは、IT関連に勤めていなくてもご存知の方も多いのではないでしょうか。
同じファイル名を付けようとすると、「”pigs – コピー.txt”を”pigs (2).txt”に名前変更しますか?」とダイアログが表示されます。
この機能を使えば、何十個、何百個とあるファイルにも統一感を持たせてファイル名の整理をすることが可能です。
しかし、「○○○ (1).txt, ○○○ (2).txt, ○○○ (3).txt…」ではなく、「○○○_001.txt, ○○○_002.txt, ○○○_003.txt…」というファイル名が必要な場合、どうやってファイル名を変更すればいいでしょうか。
ファイルが何十個程度であれば一つずつ変更してもいいですが、何百、何千とある場合には難しいです。
この記事ではWindows標準のコマンドプロンプトを使って、「○○○_001.txt, ○○○_002.txt, ○○○_003.txt…」の形式でファイル名を一括変更する方法について紹介します。
Contents
Windowsエクスプローラーの自動採番機能を確認してみよう!
さて、まずはWindowsエクスプローラーがどのように採番してくれるのか確認してみましょう。
- 作業フォルダーを用意します。
どこでも構いませんが、分かりやすいようにデスクトップ上で問題ないでしょう。
デスクトップ上で[右クリック] – [新規作成(X)] – [フォルダー(F)]として、新しいフォルダーを作成します。 - 1.で作成した作業フォルダーを開き、実験用ファイルを作成します。
エクスプローラー上で[右クリック] – [新規作成(X)] – [テキストドキュメント]として、テキストファイルを作成します。
ファイル名を長くすると後々説明に手間が係るので、簡単なものにしておきましょう。
ここでは、「pigs.txt」と作成します。
- ファイル数を増やします。
2.の手順を繰り返して、たくさんのファイルを作成してもいいのですが、ここではコピー&ペーストを駆使して量産しましょう。
[Ctrl + A](全選択) – [Ctrl + C](コピー) – [Ctrl + V](貼り付け:ペースト)を実行すると、
「pigs – コピー.txt」が作成されました。
どんどん増やしましょう。
もう一度、[Ctrl + A] – [Ctrl + C] – [Ctrl + V]を実行すると、
「pigs.txt」と「pigs – コピー.txt」の2つのファイルがコピーされ、「pigs – コピー – コピー.txt」と「pigs – コピー (2).txt」が作成されました。
同様に繰り返すことで、8ファイル、16ファイル、32ファイル、64ファイル、128ファイルと2の乗数分のファイルを高速で作成できます。
さて、とりあえず512ファイルぐらいあればテストには十分でしょう。 - エクスプローラーの自動採番を確認しよう。
上記の方法を使うと、「pigs – コピー – コピー – コピー….txt」というようなファイルがたくさん作成されているはずです。
では、いよいよエクスプローラーの自動採番で、「pigs (1).txt, pigs (2).txt, pigs (3).txt…」と名前変更してみましょう。[Ctrl + A](全選択) – [F2](名前変更)を実行し、「pigs.txt」と名前を変更すると…
できたでしょうか。
綺麗に採番できていますね。
プログラマー的には「pigs (0).txt」から採番してもらいたいところですが、まあ本題ではないのでいいでしょう。
ファイル整理をするだけであればこの機能で十分なのですが、製品のテストをする場合「pigs_001.txt」など、以下の条件を満たしてファイル名を付けたい場合があります。
- ファイル名は任意である。
- 同じファイル名が複数存在する場合、ファイル名の後ろに「_(アンダースコア)」+「3桁の連番」が付与されている。
エクスプローラーだけでは、「pigs (1).txt, pigs (2).txt…」以外の形式に変更できないので、コマンドプロンプトを使ってリネームする必要があります。
コマンドプロンプトを使って、好きな形式でリネームしよう!
さて、では本題です。
まずは実際に実行してみよう。
- まずは作業フォルダーでコマンドプロンプトを起動しましょう。
作業フォルダー上で[Shift + 右クリック] – [コマンドウィンドウをここで開く(W)]を実行し、コマンドプロンプトを起動します。 - とりあえず説明の前に以下のコマンドを入力して実行してみましょう。
0for /l %i in (1, 1, 1024) do ren "pigs (%i).txt" "pigs_%i.txt"すると…
形式を変更して一括リネームされているのが分かりますね。
ですが、先頭の0が表示されていないため、いまいち統一感がありません。
方法はいくつかありますが、
→ 連番を1,000から開始して、最終的に1,000の位を削除する。
→ 1桁の場合と2桁の場合に再度for文で処理する。
ここでは、2つ目の「1桁の場合と2桁の場合に再度for文で処理」してみましょう。 - 2.と同様の書式でfor文の条件式を変更して実行する!
0for /l %i in (1, 1, 9) do ren "pigs_%i.txt" "pigs_00%i.txt"0for /l %i in (10, 1, 99) do ren "pigs_%i.txt" "pigs_0%i.txt"
上記ふたつを実行すると…
桁を合わせてきれいに採番することができました。
コマンドの内容を確認しておこう。
上記で紹介した方法であれば、「○○○_nnn.txt」でも「○○○nnnn.txt」でも自在に一括リネームできそうですね。
さて、ここでコマンドプロンプトに入力した、
0 |
for /l %i in (1,1,512) do ren "pigs (%i).txt" "pigs_%i.txt" |
について確認しておきましょう。
上記の構文には「for文」と「renコマンド」の2つを利用しています。
for文
- for
forのキーワードで繰り返しを命令します。 - /l
/l(/L)の指定で中括弧”()”の中身が(開始, ステップ, 終了)であることを知らせます。 - %i
カウンタ変数を宣言します。 - in
宣言を終了し、中括弧”()”の定義に入ることを通知します。 - (1,1,512)
2.で記述しましたが、(開始, ステップ, 終了)の定義です。
初めに%iに”開始”の値を代入し、for文が1回実行される度に”ステップ”の値を加算します。
%iが”終了”の値を超えた場合はfor文を終了します。 - do
以降、繰り返しする内容を記述することを通知します。
for文の説明をしてくださいと言われると少し難しく感じますね。
この記事を見ている方は、おそらくなんとなく分かってくれると思います…。
renコマンド
renコマンド自体は特に難しくありません。
単に名前の変更を指示するコマンドです。
- ren
名前の変更を指示します。 - “pigs (%i).txt”
変更前の名前を記述します。
ここで、カウンタ変数の%iを利用します。
また、[pigs]と[(%i)]の間に半角スペースが含まれているので、ダブルクォーテーションで括ります。
ワイルドカード(*)も使用できます。利用したい場合は調べてみてくださいね。 - “pigs_%i.txt”
変更後の名前を記述します。
ここでもカウンタ変数%iを使い採番しています。
まとめ
以上で、好きな形式で採番することが可能になります。
バッチファイルなどを作成すれば、もっと簡単にできるでしょうが、直感的にすぐ実施できるので上記の方法を使うことが多いです。
テストではある形式で複数ファイルがあった場合に正しい処理が行われるかどうかといったテストをよく実施します。
上記のような方法でテスト用ファイルを作成できると覚えていればいつか役に立つことがあるかもしれません。