2016-03-28 3 views
0

Я Hve небольшой код, который может переименовать все файлы (изображения) в папке и это выглядит следующим образом:C# переименовать все файлы в папке

static void Main(string[] args) 
    { 
     try 
     { 
      DirectoryInfo d = new DirectoryInfo(@"C:\Users\filip_000\Pictures\Prag"); 
      int i = 1; 

      foreach (var file in d.GetFiles()) 
      { 
       Directory.Move(file.FullName, @"C:\Users\filip_000\Pictures\Prag\" + "Prag_" + i.ToString() + ".jpg"); 
       i++; 
      } 
     } 
     catch (Exception ex) 
     { 
      Console.WriteLine(ex.Message); 
     } 
    } 

Он отлично работает, но я хотел бы переименовать (Prag_1, Prag_2, Prag_3 ...) в соответствии с датой/временем файла. Я имею в виду: первая картина, которую я сделал 25.03.2016 16:04, должна быть «Prag_1», а последняя картина, которую я снял 27.03.2016 19:19, должна быть «Prag_n».

Надеюсь, я мог бы объяснить мою проблему. Спасибо за помощь.

Филиппо.

+3

Итак, какой бит, что вы возникли проблемы с? Заказ по времени создания? –

+0

Привет, да, я должен был заказать файлы по времени создания и использовать другую папку, куда поместить переименованные файлы. – user3283415

ответ

5

Order файлов на LastWriteTime, а затем переместить.

foreach (var file in d.GetFiles().OrderBy(f => f.LastWriteTime)) 
{ 
    Directory.Move(file.FullName, @"C:\Users\filip_000\Pictures\Prag\" + "Prag_" + i.ToString() + ".jpg"); 
    i++; 
} 
+0

Благодарим вас за ответ. Использование LINQ - правильный путь. Я должен поместить только переименованные файлы в другую папку. – user3283415

0

OrderByCreationTime свойство может быть хорошим выбором:

foreach (var file in d.GetFiles().OrderBy(f => f.CreationTime)) 
{ 
    Directory.Move(file.FullName, @"E:\MP3 #1\Prag\" + "Prag_" + i.ToString() + ".jpg"); 
    i++; 
} 
+0

Благодарим вас за ответ. Использование LINQ - правильный путь. Я должен поместить только переименованные файлы в другую папку. – user3283415

Смежные вопросы