我正在构建批处理文件,以便(1)将超过120天的目录移动到存档位置,然后(2)最终在4年前从存档位置删除这些文件夹。
目录名称采用CCYYMM格式(201601)。业务规则是根据目录名称中的日期移动/删除,而不是根据修改或创建日期。
这类似于Batch file logic to delete files based on date in filename,但由于我的方案是针对目录而不是文件,不确定这是否有效,或者如何修改目录。 FOR命令似乎只适用于文件(?)
是否有方法循环遍历目录并在批处理文件中执行move或rmdir命令,将名称中的月/年与当前月/年进行比较?
我确实发现FORFILE适用于基于修改日期的目录,但要求是使用目录名。
感谢您的考虑!
编辑20160817
由于目录是年/月标记(2016年1月为201601),因此我采用当前年度(201608)并减去目录值。例如201608 - 201601 = 7.然后批处理将移动任何差异为4或更大的文件夹以满足业务需求,使用FOR / D并仅查看以2开头的目录:
@echo off
setlocal EnableDelayedExpansion
SET tempDATE=%DATE:~10,4%%DATE:~4,2%
for /d %%a in ("2*") do (
set /a numberOld=tempDATE - %%a
if !numberOld! geq 4 move /Y %%a ArchiveFolder
)
使用相同类型的逻辑,我使用400作为删除/删除目录脚本的测试值。
欣赏每个人的洞察力。