重命名图像文件

时间:2012-11-23 14:05:43

标签: c# image rename

我想重命名包含C:\Users\userPC\Desktop\MATT\PROVA\IMG\AW12的3.000个图像文件的目录(C#)。这些图像实际上有这种类型的名称:

area1_area2_area3_area4.jpg

我想将area2和area4形成一个重命名为area2_area4.jpg的新文件。这些区域没有常规的字符数。我能怎么做?我发现了这个讨论Rename image files on server directory

但我是编程的新手,我无法解决我的问题。

3 个答案:

答案 0 :(得分:2)

这是一个解决方案。请注意,在制作任何混乱之前不会检查:)

public void rename(String path)
{
  string[] files =System.IO.Directory.GetFiles(path);
  foreach(string s in files)
  {
     string[] ab=s.split('_');
     if(ab.Lenght>3)  
     {
         string newName=ab[1]+ab[3];
         System.IO.File.Move(s,path+newName);
     }
  }
}

您必须使用此类参数

调用该方法
rename("C://Users//userPC//Desktop//MATT//PROVA//IMG//AW12//")

可以在此处更改分隔符 - > s.split('_')

答案 1 :(得分:1)

using System.IO;

namespace ConsoleApplication
{
    public class Program
    {
        public static void Main(string[] args)
        {
            // Rename all files in the C:\Temp\ directory.
            Program.RenameFiles(new DirectoryInfo(@"C:\Temp\"));
        }

        public static void RenameFiles(DirectoryInfo path)
        {
            // Does the path exist?
            if (path.Exists)
            {
                // Get all files in the directory.
                FileInfo[] files = path.GetFiles("*.jpg");
                foreach (FileInfo file in files)
                {
                    // Split the filename
                    string[] parts = file.Name.Split('_');
                    // Concatinate the second and fourth part.
                    string newFilename = string.Concat(parts[1], "_", parts[3]);
                    // Combine the original path with the new filename.
                    string newPath = Path.Combine(path.FullName, newFilename);
                    // Move the file.
                    File.Move(file.FullName, newPath);
                }
            }
        }
    }
}

答案 2 :(得分:0)

首先获取包含在

文件夹中的文件名列表
var listOfFileNames = Directory.GetFiles(directory);

您提到区域没有常规字符数(我假设区域由下划线字符分隔)。因此,使用下划线字符作为分隔符,将每个文件名拆分为四个区域。

然后构建新的文件名,例如

foreach(var fileName in listOfFileNames)
{
    var areas = fileName.Split('_');
    var newFileName = string.Format({0}{1}{2}, areas[0], areas[1],".jpg");
}

希望这有帮助