通过向旧文件名c#添加递增编号来重命名文件

时间:2018-01-14 23:23:42

标签: c# cocoa file-rename

我正在用c#编写我的第一个Cocoa应用程序,它假设在文件名的乞求时附加/添加数字。

用户只提供文件夹的路径(例如音乐),对于文件夹中包含的每个文件,程序假设添加递增的数字,如

001_(old_fileName),
002_(old_fileName), 
..., 
092_(old_fileName)
etc,

直到给定文件夹中的文件结尾(按路径)。

无法拆分文件名,导致文件名未知(甚至可能包含数字本身)。我已经尝试了几种可能的选择来解决这个问题,但是没有一个可行。发现很少有人在c#中更改名称时已经提出了问题,但结果中的非实际帮助了我。

下面的代码是我目前得到的其余部分,所有非工作尝试都先被评论,后来被删除。通过NSAlert我看到文件夹中每个文件的路径/名称作为帮助。我很乐意接受帮助

void RenameFunction()
{
   string sPath = _Path_textBox.StringValue;

   if (Directory.Exists(sPath))
   {
      var txtFiles = Directory.EnumerateFiles(sPath);
      var txt2Files = Directory.GetFiles((sPath));


      string fileNameOnly = Path.GetFileNameWithoutExtension(sPath);
      string extension = Path.GetExtension(sPath);
      string path = Path.GetDirectoryName(sPath);
      string newFullPath = sPath;
      int count = 1;


      while (File.Exists(sPath))//newFullPath))
      {
         string tempFileName = string.Format(count + "_" + fileNameOnly + sPath);
         //count++;
         //string.Format("{0}{0}{0}{1}", fileNameOnly, count++);
         newFullPath = Path.Combine(path, extension + tempFileName);
         count++;
      }

      string[] fileEntities = Directory.GetFiles(newFullPath);  //GetFileSystemEntries(sPath);//GetFiles(sPath);   
      //foreach (var _songName in fileEntities)
      //{
      //    string tempFileName = count + "_" + fileNameOnly + sPath;
      //            //string.Format("{0}{0}{0}{1}", fileNameOnly, count++);
      //        newFullPath = Path.Combine(sPath ,extension + tempFileName);
      //    File.Move(sPath, newFullPath);
      //}
      foreach (var _songName in fileEntities)
      {

         AmountofFiles(_songName);
      }
   }
}

void AmountofFiles(string path)
{
   var alert2 = new NSAlert();
   alert2.MessageText = "mp3";
   alert2.InformativeText = "AMOUNT OF MP3 FILES IS '{1}' : " + path;
   alert2.RunModal();
}

2 个答案:

答案 0 :(得分:0)

您尝试使用File.Move吗?只需将文件移动到相同的路径,但另一个名称

File.Move("NameToBeRename.jpg","NewName.jpg");

答案 1 :(得分:0)

您分享的代码有很多不合适的地方。想要实现的东西可以用非常简单的方法实现。

您需要做的就是从目录中检索包含完整路径的所有文件名,然后逐个重命名。

按照以下代码演示上述方法。

// Path of the directory.
var directroy = _Path_textBox.StringValue;

if (Directory.Exists(directroy))
{
    //Get all the filenames with full path from the directory.
    var filePaths = Directory.EnumerateFiles(directroy);

    //Variable to append number in front of the file name.
    var count = 1;

    //Iterate thru all the file names 
    foreach (var filePath in filePaths)
    {
        //Get only file name from the full file path.
        var fileName = Path.GetFileName(filePath);
        //Create new path with the directory path and new file name.
        var destLocation = Path.Combine(directory, count + fileName);

        //User File.Move to move file to the same directory with new name.
        File.Move(filePath, destLocation);

        //Increment count.
        count++;
    }
}

我希望这可以帮助您解决问题。