ExractFiles

カレントフォルダ(と、そのサブフォルダ)から、目的のファイルを検索し、別なフォルダにコピーしたり移動したりしてまとめます。

オプションでコピー・移動を選択したり、再帰的に検索するかどうかを指定したりできます。

 使い方: ExtractFiles.exe [パターン] [コピー先ディレクトリ] /m /r
 ※検索対象はカレントディレクトリです。
 ※パターンにはワイルドカードが使えます。
 ※コピー先ディレクトリが存在しない場合、自動的に作成されます。
    /m    ファイルをコピーではなく移動させます。
    /r    サブディレクトリも再帰的に検索します。


using System;
using System.IO;

namespace ExtractFiles
{
    class Program
    {
        static void Main(string[] args)
        {
            if (args.Length < 2)
            {
                Usage();
            }
            else
            {
                string token = args[0];
                string destDirectory = args[1];
                bool move = false;
                bool recursive = false;
                for (int i = 2; i < args.Length; i++)
                {
                    string option = args[i].ToLower();
                    if (option == "/m")
                    {
                        move = true;
                    }
                    if (option == "/r")
                    {
                        recursive = true;
                    }

                }
                DoExtract(token, destDirectory, move, recursive);
            }
        }

        static void DoExtract(string token, string destDirectory, bool move, bool recursive)
        {
            if (!Directory.Exists(destDirectory))
            {
                Directory.CreateDirectory(destDirectory);
            }

            string srcDirectory = System.Environment.CurrentDirectory;

            string[] files = null;
            if (recursive)
            {
                files = Directory.GetFiles(srcDirectory, token, SearchOption.AllDirectories);
            }
            else
            {
                files = Directory.GetFiles(srcDirectory, token, SearchOption.TopDirectoryOnly);
            }

            if (files.Length == 0)
            {
                Console.WriteLine("見つかりませんでした。");
            }
            else
            {
                foreach (string srcPath in files)
                {
                    string destPath = destDirectory + "\\" + Path.GetFileName(srcPath);
                    int count = 1;
                    while (File.Exists(destPath))
                    {
                        destPath = destDirectory + "\\" + Path.GetFileNameWithoutExtension(srcPath) + "_" + count.ToString() + Path.GetExtension(srcPath);
                        count++;
                    }
                    if (move)
                    {
                        Console.WriteLine("【移動】{0}\r\n→{1}", srcPath, destPath);
                        File.Move(srcPath, destPath);
                    }
                    else
                    {
                        Console.WriteLine("【コピー】{0}\r\n→{1}", srcPath, destPath);
                        File.Copy(srcPath, destPath);
                    }
                }
            }
        }

        static void Usage()
        {
            Console.WriteLine("使い方: ExtractFiles.exe [パターン] [コピー先ディレクトリ] /m /r");
            Console.WriteLine("※検索対象はカレントディレクトリです。");
            Console.WriteLine("※パターンにはワイルドカードが使えます。");
            Console.WriteLine("※コピー先ディレクトリが存在しない場合、自動的に作成されます。");
            Console.WriteLine("    /m    ファイルをコピーではなく移動させます。");
            Console.WriteLine("    /r    サブディレクトリも再帰的に検索します。");
        }
    }
}
最終更新:2015年12月01日 22:27