批量文件中找出每个文件名相同且序号最大的文件

图片说明__是这样的,有几个文件夹,每一个之中有这样一大批压缩文件,
每个文件都遵循一样的命名规则:name__123.zip
现在要做的就是选中一个文件夹,选出相同name文件中序号最大的文件。
其实就是选出这些文件中每一个的最新版本,做一个全部文件最新版本的集合。
然后删除其余的文件。
关键就是需要对文件名进行操作,选出么一个相同名字中排序号最大的。

因为是c++不太会,但是思路是一样的;
1.读取文件夹下的所有文件名(list),可以基于筛选,如果不只是zip结尾的话,可以根据规则筛选;
2.分解名称:Map(文件名前缀(name), list(文件名序号));
3.list可以是排序list,也可以基于自己排序;//基于倒序排列
4.遍历map,去除list排序中第一个值;其余值可以拼接组成文件全名然后删除

希望对你有帮助....

我感觉需要做个排序,或者文件名用数据库来挑选

文件命名既然有规则 将文件名 截取出来比较序号就行

  1. 获取文件夹下所有的文件名称
  2. 写匹配数字的正则表达式,把每个文件名截取成2部分,一部分是name,一部分是数字字符串,并转换为数字
  3. 按name进行分组,取每组的最大数字
  4. 获取每组的 key+数字,即得到要的结果

while(有文件)
{
取最大的文件名;
删除一批(除数字外)一样的文件名;
}