qq_28221881
赖张殷
2017-04-24 01:13
采纳率: 66.7%
浏览 942

用C#怎么修改任意路径(包括该路径下任意数目的子目录以及里面的文件)下任意数量文件的文件名

具体来说就是,某个文件夹下面的文件名,以及该文件的子目录和这个子目录下的子目录。
目录层级不确定

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • qq_28221881
    赖张殷 2017-04-25 01:37
    已采纳

    string path = @"C:\Users\Administrator\Desktop\project\new\DanZhuTaiYu222";
    string[] files = Directory.GetFiles(path, "*.*", SearchOption.AllDirectories);
    string temp = "";
    string name = "";
    int i = 0;
    foreach (string s in files)
    {
    temp = Path.GetFileNameWithoutExtension(s);
    if (temp.Contains('.'))
    {
    name = temp.Replace('.', '_');
    File.Move(s, Path.GetDirectoryName(s) + "\" + name + Path.GetExtension(s));
    }

    Console.WriteLine(++i);
    }
    Console .ReadKey();

    
    
    点赞 评论
  • showbo

    http://ask.csdn.net/questions/380496
    你2个一起采纳了我有空帮你弄一个,还有你文件都要改成什么样也没说。

    点赞 评论
  • u011400752
    ddc_net 2017-04-25 01:13

    private void UpdateNames(string path)
    {
    //获取当前时间,重命名所有文件都将加上此时间后缀,也根据自己需要重命名的规则调整
    string time = DateTime.Now.ToFileTime().ToString();
    try
    {
    //获取当前目录下的所有文件夹
    string[] dirs = Directory.GetDirectories(path);
    //获取当前目录下的所有文件
    string[] files = Directory.GetFiles(path);

                //遍历所有文件,更改文件名
                foreach (string fileName in files)
                {
                    string extension = Path.GetExtension(fileName);
                    string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(fileName);
                    if (System.IO.File.Exists(fileName))
                    {
                        System.IO.FileInfo file = new System.IO.FileInfo(fileName);
                        file.MoveTo(Path.Combine(path, fileNameWithoutExtension + "_"+ time + extension));
                    }
                }
    
                //遍历所有文件夹名字
                for (int i = 0; i < dirs.Count(); i++)
                {
                    //重命名文件夹名字
                    if (!System.IO.Directory.Exists(dirs[i]))
                    {
                        System.IO.Directory.CreateDirectory(dirs[i]);
                    }
                    System.IO.DirectoryInfo folder = new System.IO.DirectoryInfo(dirs[i]);
                    folder.MoveTo(Path.Combine(dirs[i] + time));
    
                    //递归所有文件夹
                    dirs[i] = Path.Combine(dirs[i] + time);
                    UpdateNames(dirs[i]);
                }    
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    

    这个是我自己写的,自己测了能跑,望采纳
    图片说明

    点赞 评论

相关推荐