C# 在目录中按顺序给文件编号

C# 在目录中按顺序给文件编号,c#,io,C#,Io,我有一个目录,其中有一些文本文件。 我正在尝试以编程方式从01、02、03开始按顺序重命名文件。。。103等等 我在目录中有许多文件,但这些文件的顺序不正确。我想删除它当前的序列,从01开始,依此类推 目前,我写了这篇文章,但它缺少一些东西,而且工作不正常。你能给我指一下正确的方向吗 错误:当我运行此程序时,我遇到了一个无法找到文件的问题 您的数字似乎被隔开了 您可以按”拆分文件名。。跳过第一条记录,然后用count更新文件名 大概 //Instead of .Remove() use bel

我有一个目录,其中有一些文本文件。 我正在尝试以编程方式从01、02、03开始按顺序重命名文件。。。103等等

我在目录中有许多文件,但这些文件的顺序不正确。我想删除它当前的序列,从01开始,依此类推

目前,我写了这篇文章,但它缺少一些东西,而且工作不正常。你能给我指一下正确的方向吗

错误:当我运行此程序时,我遇到了一个无法找到文件的问题


您的数字似乎被
隔开了

您可以按
”拆分文件名。
。跳过第一条记录,然后用count更新文件名

大概

//Instead of .Remove() use below logic
System.IO.File.Move(f, string.Join(".", filenames[count -1].Split('.').Skip(1)));

首先,我们应该将文件重命名。我怀疑是否所有的*.txt文件都应该移动,可能我们应该使用一些模式:

这样我们就可以

var files = Directory
  .EnumerateFiles(@"C:\Test-File", "*.txt")
  .Where(file => Regex.IsMatch(Path.GetFileNameWithoutExtension(file), pattern))
  .Select(file => new {
     // C:\Test-File\25.New File - Copy (A4).txt
     file  = file,                              
     // 25    
     index = int.Parse(Regex.Match(Path.GetFileName(file), @"^[0-9]+").Value),
     // New File - Copy (A4).txt
     name  = Path
       .GetFileName(file)
       .Substring(Regex.Match(Path.GetFileName(file), @"^[0-9]+\.").Value.Length)  
       .Trim()  
   }) 
  .OrderBy(item => item.index)
  .Select((item, i) => new {
     // C:\Test-File\25.New File - Copy (A4).txt
     oldFile = item.file,
     // C:\Test-File\07.New File - Copy (A4).txt 
     newFile = Path.Combine(
         Path.GetDirectoryName(item.file),
       $"{i + 1:d2}.{item.name}") 
   })
  .ToArray();
如果我们想看看发生了什么:

foreach (var record in files)
  Console.WriteLine($"{record.oldFile} -> {record.newFile}");
最后,循环并移动:

foreach (var record in files)  
  File.Move(record.oldFile, record.newFile);

Console.WriteLine("Job Complete!");
Console.ReadKey();

在重命名之前,你能给我们看一下你的文件名的格式吗。您的文件名是以数字开头的吗?它由
分隔吗?是的,模式如下:#。和###。(例01.一直持续到100 101。)@Prasadelkikikar不幸的是,“但它遗漏了一些东西,并且工作不正常”并不意味着什么。它是如何工作不正常的,好的和坏的是什么样子的。缺少什么?
删除(0,2)
但实际上有些文件开头包含3个数字,结尾包含3个符号。我想从开头找到前2或3个数字,基本上删除它,然后在文件上添加从01开始的正确数字
foreach (var record in files)
  Console.WriteLine($"{record.oldFile} -> {record.newFile}");
foreach (var record in files)  
  File.Move(record.oldFile, record.newFile);

Console.WriteLine("Job Complete!");
Console.ReadKey();