首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用How files (或类似的)删除超过n天的文件,但始终保留最新的n

如何使用How files (或类似的)删除超过n天的文件,但始终保留最新的n
EN

Stack Overflow用户
提问于 2010-04-22 21:37:48
回答 2查看 8.9K关注 0票数 1

(使用Windows 2000和2003 Server)

我们使用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或其他解决方案(尽管任何巧妙的一行程序总是比脚本文件更可取)。

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-05-03 20:44:48

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行)。

票数 4
EN

Stack Overflow用户

发布于 2019-06-13 04:00:59

这个小脚本删除超过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
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2691266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档