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

时间:2016-04-21 05:05:41

标签: windows batch-file

您好我需要删除Windows 7计算机上超过7天且有数据的文件夹。

我使用了以下对我来说效果不佳的命令

  1. FORFILES /S /D -10 /C "cmd /c IF @isdir == TRUE rd /S /Q @path"
  2. forfiles -p "C:\what\ever" -s -m *.* -d <number of days> -c "cmd /c del @path"
  3. 我从Batch file to delete files older than N days提到的第二个命令 对我来说也没用。

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

1 个答案:

答案 0 :(得分: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来保持跳过 = x 最新的子目录并删除所有其他子目录。

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

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

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

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