Удаляйте последний файл каждого имени файла каждый месяц
Дорогие все,
прежде всего позвольте мне попытаться описать то, что я пытаюсь сделать.
допустим, у нас есть несколько файлов в папке. Имена называются следующим образом:
Отчет 1 2017-08-01.xls
Отчет 1 2017-08-09.xls
Отчет 1 2017-08-27.xls
Отчет 1 2017-09-01.xls
Отчет 1 2017-09-09.xls
Отчет 1 2017-09-18.xls
Отчет 2 2017-08-01.xls
Отчет 2 2017-08-09.xls
Отчет 2 2017-08-27.xls
Отчет 2 2017-09-01.xls
Отчет 2 2017-09-09.xls
Отчет 2 2017-09-22.xls
Отчет 3 2017-08-01 blabla.xls
Отчет 3 2017-08-09 blabla.xls
Отчет 3 2017-08-27 blabla.xls
Отчет 3 2017-09-01 blabla.xls
Отчет 3 2017-09-09 blabla.xls
Отчет 3 2017-09-30 blabla.xls
Сейчас.
Я хочу удалить все файлы ожидайте последний файл каждого отчета каждого месяца.
Таков был бы результат. Удалить все файлы expext файлы:
Отчет 1 2017.08.27.xls
Отчет 1 2017-09-18.xls
Отчет 2 2017-08-27.xls
Отчет 2 2017-09-22.xls
Отчет 3 2017-08-27 blabla.xls
Отчет 3 2017-09-30 blabla.xls
Поэтому сначала я перечислил все файлы и соответствующую папку в Gridview.
Затем я извлек все даты с помощью регулярного выражения. Пока все хорошо.
Моя проблема заключается в том, как удалить только последнее из каждого имени файла за каждый месяц. у кого-нибудь есть предложение?
Вот мой код.
private void button1_Click(object sender, EventArgs e) { string fileName= ""; string[] folders = Directory.GetDirectories(@"C:\Test\", "*", System.IO.SearchOption.AllDirectories); for (int i = 0; i < folders.Length; i++) { string temp = ""; Console.WriteLine("Pfad " + i + " " + folders.GetValue(i)); temp = folders.GetValue(i).ToString(); dataGridView1.Rows[i].Cells[0].Value = temp; if ((Directory.GetFiles(temp, "*", SearchOption.TopDirectoryOnly).Length) == 0) { dataGridView1.Rows[i].Cells[1].Value = "No Files in Path"; } else { for (int k = 0; k < (Directory.GetFiles(temp, "*", SearchOption.TopDirectoryOnly).Length); k++) { string tempfile = ""; tempfile = (Directory.GetFiles(temp, "*", SearchOption.TopDirectoryOnly).GetValue(k).ToString()); fileName = Path.GetFileName(tempfile).ToString(); Console.WriteLine(Regex.Match(fileName, @"\d{4}-\d{2}-\d{2}")); dataGridView1.Rows[i + k].Cells[0].Value = temp; dataGridView1.Rows[i + k].Cells[1].Value = Path.GetFileName(tempfile).ToString(); dataGridView1.Rows[i+k].Cells[2].Value = Regex.Match(fileName, @"\d{4}-\d{2}-\d{2}")); } } } }
Ваша помощь будет высоко оценена.
Большое спасибо.
Что я уже пробовал:
Чтобы перечислить все файлы и даты, но не знаю, как удалить только самые последние.
Graeme_Grant
Сдачи все вашего вопроса в полужирный текст считается, что Кричит! Пожалуйста, не надо. Нажмите на кнопку Улучшить вопрос виджет для исправления. Спасибо.
Member 12341536
мне очень жаль, что я сделал это случайно
Graeme_Grant
Все благо. Наслаждайтесь решением... :)