本目录下存在.batch文件夹的目录
设根目录为rootdir,当前整理的目录为currdir
- 检查
rootdir
的所有存在的祖先目录,如果存在.batch
目,则中止(如果存在因权限问题无法检查的直接中止) - 判断
rootdir
是否存在
2.1. 如果存在:检查rootdir
是否存在子目录,如果存在子目录并且没有.batch
目录则中止。如果不存在子目录则创建.batch
文件夹并初始化配置。
2.2 如果不存在:创建rootdir
文件夹,以及创建.batch
,初始化配置 - 执行整理流程
- 如果
rootdir
不存在,则不合法 - 如果
.batch
不存在于rootdir
,则不合法
- 通过
currdir
获取距离最近的rootdir
,需要符合合法目录检测流程 - 统计当前目录的所有文件名,根据分割规则把文件名分组,每个被分割的成为分割节点。
- 当前目录的文件判断是否存在子文件夹,如果存在直接移动,并且对指定的目录执行
整理流程
- 如果当前目录的文件(不含文件夹)数量小于等于
FILE_MAX
,则中止当前整理流程 - 将所有文件放置到字典树上,按照分割节点进行创建字典树的节点
- 对该树进行前缀和求和,每个字典树的节点保存着当前节点以及所有子节点的文件数量之和。定义节点
i
以及所有子节点的文件数量之和为filenum(i)
- 对字典树从根节点进行广度优先搜索,遍历到节点i时,有两种情况
7.1.filenum(i) > FILE_MAX
跳过该节点,等待广度优先搜索继续遍历其子节点
7.2.filenum(i) <= FILE_MAX
递归创建该节点目录,然后将这些文件放入创建好的目录。并且跳过该节点的所有子节点 - 整理结束