LoginSignup
0
0

【フォルダ整理】ファイル名の先頭に更新日を示す 8 桁の数字を挿入する Windows アプリケーションを公開してみる

Last updated at Posted at 2024-06-17

ファイル名の先頭に更新日を示す 8 桁の数字を
挿入する Windows アプリケーションを作成したため
皆さんの役に立てればと思い
ソースと本体を公開したいと思います。

本体はこちら(BOOTH)
本体はこちら(Google Drive)


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

ファイル名の先頭に更新日を示す 8 桁の数字を
挿入する Windows アプリケーションです。

image1.png
image2.png
image3.png

更新日が 2024年4月1日ならば
edit.php は 20240401edit.php になります。

更新日をファイル名の先頭に付けたい
フォルダ or ファイルをドラッグ&ドロップして使用します。

フォルダをドラッグ&ドロップした場合は
子要素孫要素が名称変更の対象になります。
なので親フォルダごとドラッグ&ドロップすると楽に操作出来ます。

フォルダをドラッグ&ドロップした場合のみ
バックアップの zip が生成されます。


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

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

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

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

        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;

            for (int i = 0; i < files1.Length; i++)
            {
                string pathName1 = files1[i];
                if (System.IO.Directory.Exists(pathName1))
                {
                    ZipFile.CreateFromDirectory(
                    pathName1,
                    pathName1.Substring(0, pathName1.LastIndexOf("\\")) + "\\" + DateTime.Now.ToString("yyyyMMdd_HHmmss") + pathName1.Substring(pathName1.LastIndexOf("\\") + 1) + "_BackUP.zip");

                    string[] files2 = Directory.GetFiles(pathName1, "*", System.IO.SearchOption.AllDirectories);
                    for (int j = 0; j < files2.Length; j++)
                    {
                        string pathName2 = files2[j];
                        string fileName2 = System.IO.Path.GetFileName(pathName2);

                        //既に日付があるならばスキップ
                        try
                        {
                            int.Parse(fileName2.Substring(0, 8));
                            continue;
                        }
                        catch
                        {
                        }

                        string dateString = System.IO.File.GetLastWriteTime(pathName2).ToString("yyyyMMdd");

                        string resultPathName2 = pathName2.Substring(0, pathName2.LastIndexOf("\\")) + "\\" + dateString + fileName2;

                        System.IO.File.Move(pathName2, resultPathName2);
                    }
                }
                else
                {
                    string fileName1 = System.IO.Path.GetFileName(pathName1);

                    //既に日付があるならばスキップ
                    try
                    {
                        int.Parse(fileName1.Substring(0, 8));
                        continue;
                    }
                    catch
                    {
                    }

                    string dateString = System.IO.File.GetLastWriteTime(pathName1).ToString("yyyyMMdd");

                    string resultPathName1 = pathName1.Substring(0, pathName1.LastIndexOf("\\")) + "\\" + dateString + fileName1;

                    System.IO.File.Move(pathName1, resultPathName1);
                }
            }

            MessageBox.Show(
                    "仕分けが完了しました。", "確認",
                    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;
            }
        }
    }
}

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

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

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

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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0