【フォルダ整理】ナンバリング作業を高速で行う Windows アプリケーションを公開してみる

ナンバリングをしていないフォルダ群に対して
高速でナンバリング作業を行う
Windows アプリケーションを作成したため
皆さんの役に立てればと思い
ソースと本体を公開したいと思います。

[本体はこちら(BOOTH)](https://giftedstyle.booth.pm/items/5837572)
[本体はこちら(Google Drive)](https://drive.google.com/file/d/1dV-Soeh6oY8pAe7qRD8fmKh3fLSz6SpW/view?usp=sharing)

***

このアプリケーションの説明

ナンバリングをしていないフォルダ群に対して
高速でナンバリング作業を行う
Windows アプリケーションです。

作業する番台を選択して
その番台の名称を設定して
その番台に入れたいフォルダを
全てドラッグ＆ドロップする事で使用します。

![image1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3752886/2bd38f9b-76fd-2039-7294-fa1a114e5847.png)
![image2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3752886/0085cae0-c689-60f5-f98c-f9e8acab327c.png)
![image3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3752886/6ada3ced-49ee-ea10-4a05-3b647be103de.png)

この Windows アプリケーションを使えば
1 個あたりの番台は 10 秒以内に作成可能です。

000 番台から 900 番台まで作成したとしても
トータルで 2 分もかかりません。

操作を誤ってナンバリングに失敗した時は
「【フォルダ整理】フォルダ名の先頭の数値を取り除く Windows アプリケーションを公開してみる」
の記事で公開しているアプリケーションを使用する事で
楽に作業前の状態に戻すことが出来ます。

操作手順を覚えるために
同梱している「テスト用」フォルダの
ナンバリング作業の手順を紹介します。

工程1. 作業する番台を「000 番台」にして
　　000番台の名称を「自社サイト」にします。
工程2. 下記のフォルダを全て同時にドラッグ＆ドロップします。
　　すると 000 番台が完成します。

「dialogs」
「SP流」
「ギフテッドスタイル」
「せふぃろと」

工程3. 作業する番台を「100番台」にして
　　100番台の名称を「他社サイト」にします。
工程4. 下記のフォルダを全て同時にドラッグ＆ドロップします。
　　すると 100 番台が完成します。

「タクシーム」
「てげてげ（旧：粉右衛門）」
「ポリフォニー」

工程5. 作業する番台を「200番台」にして
　　200番台の名称を「その他」にします。
工程6. 下記のフォルダを全て同時にドラッグ＆ドロップします。
　　すると 200 番台が完成します。

「素材サイト」
「動画専用」

以上でナンバリング作業が完了します。

***

このアプリケーションのソースコード

Visual Studio の Windows フォームで作成しています。
ソースコードは下記の内容です。

```Csharp:使用したコード
using System.IO.Compression;

namespace SephirothExecNunbering
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            comboBox1.Items.Add("000 番台");
            comboBox1.Items.Add("100 番台");
            comboBox1.Items.Add("200 番台");
            comboBox1.Items.Add("300 番台");
            comboBox1.Items.Add("400 番台");
            comboBox1.Items.Add("500 番台");
            comboBox1.Items.Add("600 番台");
            comboBox1.Items.Add("700 番台");
            comboBox1.Items.Add("800 番台");
            comboBox1.Items.Add("900 番台");
        }

        private void panel1_DragDrop(object sender, DragEventArgs e)
        {
            if (e.Data == null)
            {
                return;
            }
            object? data = e.Data.GetData(DataFormats.FileDrop, false);
            if (data == null)
            {
                return;
            }

            string[] files1 = (string[])data;

            System.IO.Directory.CreateDirectory(files1[0].Substring(0, files1[0].LastIndexOf("\\") + 1) + comboBox1.Text.Substring(0, 3) + "■■■" + textBox1.Text + "■■■");

            int nowIndex = int.Parse(comboBox1.Text.Substring(0, 3)) + 1;

            for (int i = 0; i < files1.Length; i++)
            {
                string pathName1 = files1[i];
                if (System.IO.Directory.Exists(pathName1))
                {
                    string indexString = "" + nowIndex;

                    while (indexString.Length < 3)
                    {
                        indexString = "0" + indexString;
                    }

                    System.IO.Directory.Move(pathName1, pathName1.Substring(0, pathName1.LastIndexOf("\\") + 1) + indexString + "_" + pathName1.Substring(pathName1.LastIndexOf("\\") + 1));
                    nowIndex++;
                }
            }

            MessageBox.Show(
                    comboBox1.Text.Substring(0, 3) + "番台のナンバリングが完了しました。", "確認",
                    MessageBoxButtons.YesNo, MessageBoxIcon.Question
                    );
        }

        private void panel1_DragEnter(object sender, DragEventArgs e)
        {
            if (e.Data == null)
            {
                return;
            }
            if (e.Data.GetDataPresent(DataFormats.FileDrop))
            {
                e.Effect = DragDropEffects.All;
            }
            else
            {
                e.Effect = DragDropEffects.None;
            }
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            label1.Text = "ここに " + comboBox1.Text.Substring(0, 3) + " 番台のナンバリングをしたいフォルダを全てドラッグ＆ドロップして下さい。";
            label2.Text = comboBox1.Text.Substring(0, 3) + "番台の名称";
        }
    }
}
```

***

以上 Windows アプリケーションを公開しました。

Visual Studio の Windows フォームは
フォルダ整理をしたい時等に
補助用のアプリケーションを
簡単に作成する事ができます。

皆さんもフォルダ整理の際は
Visual Studio を活用してみては
いかがでしょうか？

皆さんの開発の助けになれますように
閲覧ありがとうございました。