控制台 批量修改文件名

 static void Main(string[] args)
        {
            string text = @"
__________________用于批量修改文件_______________________
    注意事项: 1.在CMD 中执行命令 
              2.修改的目标文件,是以.ts 结尾
              3.一共4个参数,
              4.如果参数中存在空格,则用 引号  包含参数
              
    args[0] 参数  :  
                目录
    args[1] 参数 :   
                文件名
    args[2] 参数:
                要保存的目标文件,从 begin 开始计数.如果找到++
    args[3] 参数:
                将要寻找的目标文件,从start 开始,如果找到++

    如果文件,连续断断续续, 则 一段一段的执行.请不要多次执行
_________________________________________________________

例如:
    C:\Users\q\Desktop\ttt\ChongJiChengShi.1.ts


    编辑的命令为: 
        cmd PCName.exe C:\Users\q\Desktop\ttt ChongJiChengShi. 5 8


*****************************************************************************

    ";
            var i = 0;
            Console.WriteLine(args.Length);
            if (args.Length != 5) Console.Write(@" 例如:   cmd PCName.exe C:\Users\q\Desktop\ttt ChongJiChengShi. 5 8");

            //C:\Users\q\Desktop\ttt
            //ChongJiChengShi.1.ts
            try
            {
                var path = args[0];
                var file = args[1];
                int begin = int.Parse(args[2]);
                int start = int.Parse(args[3]);

                //var path = @"C:\Users\亚龙\Desktop\ttt";
                //var file = "ChongJiChengShi.";
                //int begin = 5;
                //int start = 8;

                if (!Directory.Exists(path))
                    throw new Exception("不存在该目录");
                string[] directory = Directory.GetFiles(path);
             
                var orderbyDot = directory.Where(e => e.Contains(".ts"))
                    .ToDictionary(e => int.Parse(e.Substring(e.IndexOf(".") + 1, e.LastIndexOf(".") - 1 - e.IndexOf(".")))).OrderBy(e => e.Key);
                foreach (var item in orderbyDot)
                {
                    if (Path.GetFileNameWithoutExtension(item.Value) == (file + start))
                    {
                        var saveFile = Path.Combine(path, file + begin + Path.GetExtension(item.Value));
                        var sourceFile = Path.Combine(path, item.Value);
                        var bakFile = Path.Combine(path, "bak",  Path.GetFileName(item.Value));

                        if (!Directory.Exists(Path.Combine(path, "bak")))
                        {
                            Directory.CreateDirectory(Path.Combine(path, "bak"));
                        }
                        if (File.Exists(saveFile))
                        {
                            throw new Exception("已存在该目标文件: [" + saveFile + "]");
                        }
                        File.Copy(sourceFile, saveFile);
                        File.Move(sourceFile, bakFile);
                        //File.Delete(sourceFile);

                        start++;
                        begin++;
                        i++;
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(text);
                Console.WriteLine("********************ERROR Message***************************");
                Console.WriteLine(ex.Message);
            }
            Console.WriteLine("批量修改文件名结束: 一共执行了" + i + "次");
            
        }

 

 

如果文件序列是断的,

1,2,3,4 ,8,9,10,15,16,17,18,19

需要执行两次

Part 1

 cmd PCName.exe C:\Users\q\Desktop\ttt ChongJiChengShi. 5 8
结果:
1,2,3,4,5,6,7,15,16,17,18,19

Part 2
 cmd PCName.exe C:\Users\q\Desktop\ttt ChongJiChengShi. 8 15
结果:
1,2,3,4,5,6,7,8,9,10,11,12

 

posted @ 2014-08-27 10:25  wylfocus  阅读(357)  评论(0编辑  收藏  举报