首页 文章

批量作业在Windows 7上删除超过7天的文件夹

提问于
浏览
0

嗨,我需要删除Windows 7计算机上超过7天的文件夹并在其中包含数据 .

我使用了以下命令,这些命令对我来说效果不佳

  • FORFILES /S /D -10 /C "cmd /c IF @isdir == TRUE rd /S /Q @path"

  • forfiles -p "C:\what\ever" -s -m *.* -d <number of days> -c "cmd /c del @path"

我从Batch file to delete files older than N days提到的第二个命令对我来说也不起作用 .

有人可以在 C:\what\ever 上的第二个命令中建议使用什么,或者建议一个替代命令来删除超过7天的文件夹 .

1 回答

  • 0

    因此,您的任务是删除不再需要的旧备份目录 .

    棘手的解决方案是使用“删除超过X天” .

    简单的解决方案如下:

    @echo off
    set "BackupDirectory=C:\Backup"
    for /F "skip=7 delims=" %%D in ('dir "%BackupDirectory%" /AD /B /O-D 2^>nul') do (
        rd /Q /S "%BackupDirectory%\%%D"
    )
    

    命令 DIR 返回包含的列表

    • 因为 /AD (属性目录)只是子目录而且

    • 因为 /B (裸格式)只是目录名和

    • /O-D 按日期排序,最新最高,最旧最后 .

    命令 FOR 从列表中跳过前7行,即7个最新的子目录,并在其他(较旧的)目录上执行删除子目录的命令 .

    在您的情况下,目录名称以 yyyy-mm-dd 开头,也可以使用 /O-N (按名称反向排序)而不是 /O-D 来保留skip = x 最新的子目录并删除所有其他子目录 .

    Note: 在NTFS分区上,如果添加/修改/删除此文件夹中的任何文件/文件夹,则文件夹的最后修改日期会更改,但不会更改FAT16,FAT32或exFAT分区 .

    /O-D 之后的 DIR 命令行上可以添加选项/ TC获取输出目录列表,该列表按文件夹的创建日期排序 . 但备份文件夹通常在创建备份后不会被修改 . 将文件夹中修改的最新文件夹保留在帐户中或仅评估文件夹创建时间是一个意见问题 .

    根据我删除备份的经验,日期并不那么重要 . 重要的是仅限制备份数量以避免填充存储介质 . 例如,如果备份通常需要5 GiB,则要保留的备份数可能是10或20,但如果备份通常只需要500 KiB,则该数量可以增加到100.日期无关紧要,只是总量备份所需的字节数,因为限制是存储介质大小而不是时间 Span .

    对于每次执行备份操作时始终附加行的日志文件,通常必须遵守日志文件的大小,而不是将行附加到同一日志文件的时间 Span ,以避免日志文件变大大 . 将大小> x KiB或MiB的日志文件移动到带有 /Y*_old.log 以覆盖已存在的 *_old.log ,然后将新行重定向到新的日志文件通常是只有2个日志文件( *.log*_old.log )的正确策略定义的最大文件大小,包含最后 x 备份操作的日志行 .

相关问题