1

(使用 Windows 2000 和 2003 服务器)

我们使用 forfiles.exe 删除超过 n 天的备份 .zip 文件,效果很好(命令有点像下面)

forfiles -p"C:\Backup" -m"*.zip" -c"cmd /c if @ISDIR==FALSE del \"@PATH\@FILE\"" -d-5

如果无法创建 .zip 文件,我想确保 5 天后备份中不会出现 0 个 .zip 文件。因此,命令需要是:

“删除任何超过 5 天的文件,但始终保留最近的 5 个文件,即使它们本身超过 5 天”

我们可以使用 forfiles.exe 或其他解决方案(尽管任何光滑的单行文件总是比脚本文件更可取)。

谢谢!

4

2 回答 2

4
FOR /F "skip=5 delims=" %%G IN ('dir /b /O-D /A-D') DO del "%%G"

将删除除 5 个最新文件之外的所有文件。我找不到一个单线来让所有文件更新超过 5 天,因此您可能不得不使用一些更复杂的逻辑。

/b

仅列出没有额外信息的文件名

/O-D

按相反的日期顺序对列表进行排序。

/A-D

过滤器只显示非目录文件

skip=5

跳过前 5 行(最新的 5 行)。

于 2010-05-03T12:44:48.020 回答
0

这个小脚本会删除超过 5 天或更准确地说,至少在 6 天前修改过的匹配文件,但始终保留至少 5 个最近修改过的文件:

rem // Change to the target directory:
pushd "C:\Backup" && (
    rem // Loop through all matching files but skip the 5 most recently modified ones:
    for /F "skip=5 delims= eol=|" %%F in ('
        dir /B /A:-D /O:-D "*.zip"
    ') do (
        rem // Delete the currently iterated file only when modified at least 6 days ago:
        forfiles /P "%%~dpF." /M "%%~nxF" /D -6 /C "cmd /C ECHO del /F /A @PATH" 2> nul
    )
    rem // Restore the original working directory:
    popd
)
于 2019-06-12T20:00:58.827 回答