c#实现文件批处理:剪切、复制、删除、改名、分类等

全栈工程师开发手册 (作者:栾鹏)
c#教程全解

c#实现文件批处理,包含批量剪切、复制、删除、按时间分类到不同文件夹,按格式分类到不同文件夹,以及批量修改名称等等。

c#批量剪切文件函数

 /// <summary>
 /// 文件剪切、改名操作
 /// </summary>
 /// <param name="srcdir">源文件夹</param>
 /// <param name="desdir">目的文件夹</param>
 public static void file_cut(string srcdir,string desdir)
 {
     DirectoryInfo thefolder = new DirectoryInfo(srcdir);
     foreach (FileInfo nextfile in thefolder.GetFiles())
     {
         try
         {
             string filename = nextfile.Name;
             string filefullname = nextfile.FullName;
             string mudi = desdir + "\\" + filename;
             File.Move(filefullname,mudi);
         }
         catch (System.Exception ex)
         {
             System.Console.WriteLine(ex.ToString());
         }
     }
 }

c#批量复制文件函数

/// <summary>
/// 文件复制函数
/// </summary>
/// <param name="srcdir">源文件夹</param>
/// <param name="desdir">目的文件夹</param>
public static void file_copy(string srcdir, string desdir)
{
    DirectoryInfo thefolder = new DirectoryInfo(srcdir);
    foreach (FileInfo nextfile in thefolder.GetFiles())
    {
        try
        {
            string filename = nextfile.Name;
            string filefullname = nextfile.FullName;
            string mudi = desdir + "\\" + filename;
            //如果目的文件已经存在
            if (File.Exists(mudi))
            {
                File.Delete(mudi);
            }
            else
            {
                File.Copy(filefullname, mudi);
            }
        }
        catch (System.Exception ex)
        {
            System.Console.WriteLine(ex.ToString());
        }
    }
}

c#批量删除文件函数

public static void file_delete(string srcdir)
{
    DirectoryInfo thefolder = new DirectoryInfo(srcdir);
    foreach (FileInfo nextfile in thefolder.GetFiles())
    {
        try
        {
            string filename = nextfile.Name;
            string filefullname = nextfile.FullName;
            File.Delete(filefullname);
        }
        catch (System.Exception ex)
        {
            System.Console.WriteLine(ex.ToString());
        }
    }
}

c#批量按时间将文件分类到对应的文件夹

 /// <summary>
 /// 文件按时间分类到不同的文件夹
 /// </summary>
 /// <param name="srcdir">源文件夹</param>
 /// <param name="desdirtemp">目的文件夹</param>
 public static void file_classify_date(string srcdir, string desdir)
 {
     DirectoryInfo thefolder = new DirectoryInfo(srcdir);
     foreach (FileInfo nextfile in thefolder.GetFiles())
     {
         try
         {
             string filename = nextfile.Name;
             string filefullname = nextfile.FullName;
             string creattime = nextfile.CreationTime.Year.ToString() + "_" + nextfile.CreationTime.Month.ToString() + "_" + nextfile.CreationTime.Day.ToString();
             string desdirtemp = desdir + "\\" + creattime;
             if (!Directory.Exists(desdirtemp))
             {
                 Directory.CreateDirectory(desdirtemp);
             }
             string mudifile = desdirtemp + "\\" + filename;
             //如果目的文件已经存在
             if (File.Exists(mudifile))
             {
                 File.Delete(mudifile);
             }
             else
             {
                 //移动文件函数
                 File.Move(filefullname, mudifile);
             }
         }
         catch (System.Exception ex)
         {
             System.Console.WriteLine(ex.ToString());
         }
     }
 }

c#批量按格式将文件分类到对应到文件夹

/// <summary>
/// 文件按格式分类到不同的文件夹
/// </summary>
/// <param name="srcdir">源文件夹</param>
/// <param name="desdirtemp">目的文件夹</param>
public static void file_classify_format(string srcdir, string desdir)
{
    DirectoryInfo thefolder = new DirectoryInfo(srcdir);
    foreach (FileInfo nextfile in thefolder.GetFiles())
    {
        try
        {
            string filename = nextfile.Name;
            string filefullname = nextfile.FullName;
            string filetype = Path.GetExtension(filefullname);
            string desdirtemp  =  desdir+ "\\" + filetype;
            if (!Directory.Exists(desdirtemp))
            {
                Directory.CreateDirectory(desdirtemp);
            }
            string mudifile = desdirtemp + "\\" + filename;
            //如果目的文件已经存在
            if (File.Exists(mudifile))
            {
                File.Delete(mudifile);
            }
            else
            {
                //移动文件函数
                File.Move(filefullname, mudifile);
            }
        }
        catch (System.Exception ex)
        {
            System.Console.WriteLine(ex.ToString());
        }
    }
}

c#批量修改文件名,

/// <summary>
/// 所有文件名添加指定模式的字符串
/// </summary>
/// <param name="dirpath">源文件夹</param>
/// <param name="setstr">修改模式</param>
/// <param name="append">名称是追加还是修改</param>
public static void file_name_change(string dirpath, string set, bool append)
{
    if (set == "")
    {
        throw new Exception("修改文件名不能为空");
        return;
    }
    DirectoryInfo thefolder = new DirectoryInfo(dirpath);
    int index = 0;
    foreach (FileInfo nextfile in thefolder.GetFiles())
    {
        try
        {
            string filename = nextfile.Name;
            string filefullname = nextfile.FullName;
            string yuandir = filefullname.Substring(0, filefullname.LastIndexOf("\\"));
            string filetype = Path.GetExtension(filefullname);
            filename = filename.Replace(filetype, "");
            if (!append)
            {
                filename="";  //如果不使用追加模式,则清空文件名
            }
            if (set == "*date")
            {
                string mudifile = yuandir + "\\" + filename + DateTime.Now.ToString("yyyy-MM-dd") + filetype;
                Directory.Move(filefullname, mudifile);
            }
            else if (set == "*time")
            {
                string mudifile = yuandir + "\\" + filename + DateTime.Now.ToString("dd-mm-ss")+ filetype;
                Directory.Move(filefullname, mudifile);
            }
            else if (set == "*date_time")
            {
                string mudifile = yuandir + "\\" + filename + DateTime.Now.ToString("yyyy-MM-dd-mm-ss") + filetype;
                Directory.Move(filefullname, mudifile);
            }
            else if (set == "*number")
            {
                string mudifile = yuandir + "\\" + filename +Convert.ToString(index)+filetype;
                index++;
                Directory.Move(filefullname, mudifile);
            }
            else
            {
                string mudifile = yuandir + "\\" + filename + set + filetype;
                Directory.Move(filefullname, mudifile);
            }
        }
        catch (System.Exception ex)
        {
            System.Console.WriteLine(ex.ToString());
        }
    }
}