1

我正在寻找一个脚本,从最旧的第一个开始删除超过“n”个文件(可能是 5 个版本),将最新的 5 个文件保留在数百个目录中。这些目录都嵌套在一个根文件夹下。

这些是在夜间过程中创建的备份文件的副本,出于我不会深入讨论的原因,我目前无法控制备份系统来告诉它只保留 5 个副本,否则我会这样做。 .. 我不能只使用仅基于日期的任何东西,因为在某些情况下,最后 10 个版本是最后 10 天,但在其他情况下,备份是每周、每月甚至临时备份,因此日期可以追溯到 10 周/月在固定的一天或其他什么...我自己尝试过各种脚本,但看不到正确的...

我找到了一个适用于单个目录的目录,但我无法让它通过子目录并正常工作。

所以,如果我运行这个:

@echo off &setlocal 设置文件夹=d:\test\test1

推送“%文件夹%”

for /f "skip=5 tokens=*" %%i in ('dir /a:-ds /b /o:-d') do del "%%i"

流行音乐


它进入 'd:\test\test1' 目录并保留最新的 5 个文件并删除其余文件。无论该目录中有多少文件,它都有效。

所以现在,我真正想要的是从 'd:\test' 到下面的目录,并删除所有这些目录中除 5 个文件版本之外的所有文件版本。我已经尝试过在 dir 命令中使用 '/s' 的变体,但还没有找到一个完全可以做到的...

玩了几天没有成功...任何人有任何想法我对任何事情都持开放态度...谢谢!

4

1 回答 1

3
FOR /R "d:\test\test1\" %%G in (.) DO (
Pushd %%G

Echo now in %%G

for /f "skip=5 tokens=*" %%i in ('dir /a:-d-s /b /o:-d') do echo "%%i"

Popd )
于 2012-10-19T17:38:58.123 回答