我想重命名包含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
但我是编程的新手,我无法解决我的问题。
答案 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");
}
希望这有帮助