需要一个批处理文件来根据目录名中的日期(CCYYMM)移动目录

时间:2016-08-16 20:53:30

标签: batch-file

我正在构建批处理文件,以便(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作为删除/删除目录脚本的测试值。

欣赏每个人的洞察力。

0 个答案:

没有答案