Windows脚本从目录中删除多个x文件&子目录

时间:2012-06-14 20:05:26

标签: windows

我希望编写一个脚本,删除超过'n'个文件(可能是5个版本),从最早的文件开始,将最新的5个文件保存在数百个目录中。这些目录都嵌套在一个根文件夹下。

这些是在夜间过程中创建的备份文件的副本,由于我不会进入的原因,我目前无法控制备份系统,只能保留5份副本,或者我会完成它那样... 我不能仅仅使用基于日期的任何东西,因为在某些情况下,最后10个版本是过去10天,但在其他情况下,备份是每周,每月或甚至临时,因此日期可以追溯到10周/月设定日或其他...... 我自己尝试了各种脚本,但看不到这个问题......

我发现一个适用于单个目录但是我无法通过子目录进行正常工作。

所以,如果我运行它:

@echo off& setlocal set folder = d:\ test \ test1

pushd“%folder%”

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

POPD


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

所以现在,我真正想要的是从'd:\ test'沿着下面的目录走,并删除所有这些目录中的所有5个文件版本。 我在dir命令中尝试使用'/ s'进行变换,但还没有找到一个相当的变量...

连续几天玩这个没有成功...... 任何人都有任何想法我对任何事情都开放...... 谢谢!

1 个答案:

答案 0 :(得分: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 )