ぴぐノート

Good code is its own best documentation.

雑記

Windows標準コマンドプロンプトを使って自動採番してみよう!

投稿日:2016年10月17日 更新日:

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…」の形式でファイル名を一括変更する方法について紹介します。

Windowsエクスプローラーの自動採番機能を確認してみよう!

さて、まずはWindowsエクスプローラーがどのように採番してくれるのか確認してみましょう。

  1. 作業フォルダーを用意します。
    どこでも構いませんが、分かりやすいようにデスクトップ上で問題ないでしょう。
    デスクトップ上で[右クリック] – [新規作成(X)] – [フォルダー(F)]として、新しいフォルダーを作成します。
  2. 1.で作成した作業フォルダーを開き、実験用ファイルを作成します。
    エクスプローラー上で[右クリック] – [新規作成(X)] – [テキストドキュメント]として、テキストファイルを作成します。
    ファイル名を長くすると後々説明に手間が係るので、簡単なものにしておきましょう。
    ここでは、「pigs.txt」と作成します。
    sample_001
  3. ファイル数を増やします。
    2.の手順を繰り返して、たくさんのファイルを作成してもいいのですが、ここではコピー&ペーストを駆使して量産しましょう。
    [Ctrl + A](全選択) – [Ctrl + C](コピー) – [Ctrl + V](貼り付け:ペースト)を実行すると、
    sample_002
    「pigs – コピー.txt」が作成されました。
    どんどん増やしましょう。
    もう一度、[Ctrl + A] – [Ctrl + C] – [Ctrl + V]を実行すると、
    sample_003
    「pigs.txt」と「pigs – コピー.txt」の2つのファイルがコピーされ、「pigs – コピー – コピー.txt」と「pigs – コピー (2).txt」が作成されました。
    同様に繰り返すことで、8ファイル、16ファイル、32ファイル、64ファイル、128ファイルと2の乗数分のファイルを高速で作成できます。
    さて、とりあえず512ファイルぐらいあればテストには十分でしょう。
  4. エクスプローラーの自動採番を確認しよう。
    上記の方法を使うと、「pigs – コピー – コピー – コピー….txt」というようなファイルがたくさん作成されているはずです。
    では、いよいよエクスプローラーの自動採番で、「pigs (1).txt, pigs (2).txt, pigs (3).txt…」と名前変更してみましょう。

    [Ctrl + A](全選択) – [F2](名前変更)を実行し、「pigs.txt」と名前を変更すると…
    sample_004

できたでしょうか。
綺麗に採番できていますね。
プログラマー的には「pigs (0).txt」から採番してもらいたいところですが、まあ本題ではないのでいいでしょう。

ファイル整理をするだけであればこの機能で十分なのですが、製品のテストをする場合「pigs_001.txt」など、以下の条件を満たしてファイル名を付けたい場合があります。

  • ファイル名は任意である。
  • 同じファイル名が複数存在する場合、ファイル名の後ろに「_(アンダースコア)」+「3桁の連番」が付与されている。

エクスプローラーだけでは、「pigs (1).txt, pigs (2).txt…」以外の形式に変更できないので、コマンドプロンプトを使ってリネームする必要があります。

コマンドプロンプトを使って、好きな形式でリネームしよう!

さて、では本題です。

まずは実際に実行してみよう。

  1. まずは作業フォルダーでコマンドプロンプトを起動しましょう。
    作業フォルダー上で[Shift + 右クリック] – [コマンドウィンドウをここで開く(W)]を実行し、コマンドプロンプトを起動します。
  2. とりあえず説明の前に以下のコマンドを入力して実行してみましょう。

    すると…
    sample_005

    形式を変更して一括リネームされているのが分かりますね。
    ですが、先頭の0が表示されていないため、いまいち統一感がありません。
    方法はいくつかありますが、
    → 連番を1,000から開始して、最終的に1,000の位を削除する。
    → 1桁の場合と2桁の場合に再度for文で処理する。
    ここでは、2つ目の「1桁の場合と2桁の場合に再度for文で処理」してみましょう。

  3. 2.と同様の書式でfor文の条件式を変更して実行する!

    上記ふたつを実行すると…
    sample_006
    桁を合わせてきれいに採番することができました。

コマンドの内容を確認しておこう。

上記で紹介した方法であれば、「○○○_nnn.txt」でも「○○○nnnn.txt」でも自在に一括リネームできそうですね。
さて、ここでコマンドプロンプトに入力した、

について確認しておきましょう。
上記の構文には「for文」と「renコマンド」の2つを利用しています。

for文
  1. for
    forのキーワードで繰り返しを命令します。
  2. /l
    /l(/L)の指定で中括弧”()”の中身が(開始, ステップ, 終了)であることを知らせます。
  3. %i
    カウンタ変数を宣言します。
  4. in
    宣言を終了し、中括弧”()”の定義に入ることを通知します。
  5. (1,1,512)
    2.で記述しましたが、(開始, ステップ, 終了)の定義です。
    初めに%iに”開始”の値を代入し、for文が1回実行される度に”ステップ”の値を加算します。
    %iが”終了”の値を超えた場合はfor文を終了します。
  6. do
    以降、繰り返しする内容を記述することを通知します。

for文の説明をしてくださいと言われると少し難しく感じますね。
この記事を見ている方は、おそらくなんとなく分かってくれると思います…。

renコマンド

renコマンド自体は特に難しくありません。
単に名前の変更を指示するコマンドです。

  1. ren
    名前の変更を指示します。
  2. “pigs (%i).txt”
    変更前の名前を記述します。
    ここで、カウンタ変数の%iを利用します。
    また、[pigs]と[(%i)]の間に半角スペースが含まれているので、ダブルクォーテーションで括ります。
    ワイルドカード(*)も使用できます。利用したい場合は調べてみてくださいね。
  3. “pigs_%i.txt”
    変更後の名前を記述します。
    ここでもカウンタ変数%iを使い採番しています。

まとめ

以上で、好きな形式で採番することが可能になります。
バッチファイルなどを作成すれば、もっと簡単にできるでしょうが、直感的にすぐ実施できるので上記の方法を使うことが多いです。

テストではある形式で複数ファイルがあった場合に正しい処理が行われるかどうかといったテストをよく実施します。
上記のような方法でテスト用ファイルを作成できると覚えていればいつか役に立つことがあるかもしれません。

スポンサーリンク

スポンサーリンク

-雑記
-

執筆者:

関連記事

第2新卒やフリーターが未経験からプログラマになるには無料のITスクール!

私が働いている会社でもちょくちょく面接希望の電話がかかってきます。 業界全体として人手不足と言われるコンピューター業界なので、未経験であっても学習意欲が感じられたり何か自分で物づくりを経験していれば、 …

C++のプリプロセッサの復習をしよう その1

C++を勉強していた時期から苦手だったのがプリプロセッサでした。 インクルートガードに#ifndefやら#defineやら#pragma onceやら…。 C++に限った話ではありませんが …

DLLファイルに含まれる関数の調べ方

何かプロジェクトを作成しようとするさいに、インターネットで同じような機能をもったツールを検索するということは当たり前に行われていると思います。 そう簡単に見つかることは多くありませんが、オープンソース …

【将棋】電王トーナメントはPonanzaが優勝。叡王戦は羽生善治九段がベスト4に。

将棋の電王トーナメント、叡王戦、そして電王戦はご存知でしょうか。 コンピューターの将棋ソフトで最強を決める電王トーナメント、その最強将棋ソフトとの対戦者を決める叡王戦、そして最強将棋ソフトと叡王戦優勝 …

【2016年福袋】ヨドバシカメラ 2016年夢のお年玉箱の中身は?

2017年のヨドバシカメラ 夢のお年玉箱はヨドバシカメラ公式のショッピングアプリで”のみ”予約ができると発表されましたね。 ヨドバシカメラの夢のお年玉箱は、例年とても混雑するこ …