読者です 読者をやめる 読者になる 読者になる

プログラミングとかブログ

Unity/C#/SRPGStudio/RPGツクールMVの情報とかその他気になったことを調べて書きます。

【C#】フォルダをD&Dすると全ファイルを今日の日付でバックアップする

ポメラ買った→ファイルバックアップしたい→いちいちコピーするの面倒→プログラムでやろう

using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;

//フォルダをD&Dすると全ファイルを今日の日付でバックアップするプログラム
//フォルダ内フォルダは知らん
namespace FolederBuckUpper
{
    class Program
    {
        static void Main(string[] args)
        {
            var list = new List<string>();
            foreach (var filePath in Directory.EnumerateFiles(args[0]))
            {
                //バックアップしたいファイル名を取得
                var filename = Path.GetFileName(filePath);
                //日付を取得
                var d = DateTime.Today.Date.Month.ToString("D2") + DateTime.Today.Date.Day.ToString("D2");


                //ぶっこんだフォルダと同名のフォルダに、日付を先頭に付加したバックアップファイルのパスを作る
                //今回はOneDriveにしてます。
                var buckupFilePath = string.Format(
                    Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) +
                    @"\OneDrive\Word\buckup\{0}\{1}{2}", args[0].Split('\\').Last(), d, filename);

                //フォルダがなかったら作る
                if (!Directory.Exists(Path.GetDirectoryName(buckupFilePath)))
                    Directory.CreateDirectory(Path.GetDirectoryName(buckupFilePath));

                //本日のバックアップファイルが作成済みなら削除
                if (File.Exists(buckupFilePath))
                    File.Delete(buckupFilePath);
                //ファイルをコピーしてバックアップ
                File.Copy(filePath, buckupFilePath);
            }
            
        }
    }
}