ファイル名の先頭に更新日を示す 8 桁の数字を
挿入する Windows アプリケーションを作成したため
皆さんの役に立てればと思い
ソースと本体を公開したいと思います。
本体はこちら(BOOTH)
本体はこちら(Google Drive)
このアプリケーションの説明
ファイル名の先頭に更新日を示す 8 桁の数字を
挿入する Windows アプリケーションです。
更新日が 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 を活用してみては
いかがでしょうか?
皆さんの開発の助けになれますように
閲覧ありがとうございました。