我的文件夹名称示例如下:
abc.300520111500
abc.310520111500
abc.310520111515
正如您所见,这些文件夹由日期时间戳备份。
原始文件夹:
abc
备份文件夹:
abc.ddMMyyyyhhmm
我目前的代码如下:
var files = Directory.GetDirectories(path, "abc.*");
foreach(var file in files)
Console.WriteLine(file);
foreach(var file in files.OrderByDescending(x=>x).Skip(int.Parse(args[0])))
Console.WriteLine(file);
foreach(var file in files.OrderByDescending(x=>x).Skip(int.Parse(args[0])))
Directory.Delete(file, true);
其中args [0]将标识要跳转到的文件夹数。此代码将始终删除最小的文件夹编号。
然而,我最近遇到了一个问题,那就是我们月份有变化。例如:
abc.020620111500
其中020620111500是现在最小的文件夹编号。
因此,abc.020620111500
将始终被删除,而不是abc.300520111500
任何人都知道如何解决这个问题?
答案 0 :(得分:1)
如果您无法将目录名称更改为YYYYMMDD,这将始终产生您想要的结果,您可以尝试操作/解析文件名字符串(可能转换为日期以进行比较),然后重建要删除的目录名称
答案 1 :(得分:1)
您可以从文件夹列表中拆分日期时间部分并使用无序列表。然后按日期时间对它们进行排序。像这样......
var orderedList =
(from p in unorderedList
let value = DateTime.Parse(p.Details.Find(s => s.Name == sortColumn).Value)
orderby value
select p)
.ToList();