【问题标题】:batch - delete folders older than 10 days批量 - 删除超过 10 天的文件夹
【发布时间】:2014-09-16 22:08:15
【问题描述】:

我写了一个批处理文件,从电脑备份文件夹。 备份存储在服务器上,例如 \server\backup\pc1\folder1\today 现在备份脚本每天运行一次。在第 11 天,它的文件夹 1 下有 11 个子文件夹。现在每天,当他再次备份并创建一个文件夹十一时,它会自动删除最旧的文件夹,以便再次有十个备份文件夹。

我尝试使用 forfiles.exe(集成在 Windows 中)来实现。但是对于完整的文件夹,它并没有那么好用。

你能帮帮我吗?

谢谢!

【问题讨论】:

  • 什么是完整文件夹?
  • 我的意思是文件夹。文件有效,文件夹不行。
  • 请阅读以下关于同一问题的先前帖子:stackoverflow.com/questions/51054/…
  • ok。我遇到过同样的问题。为文件夹制作了一个 .net 应用程序.. 但不再拥有它
  • 我看过那篇文章,但正如我所说。使用文件夹,它并没有那么好用..

标签: batch-file


【解决方案1】:
@echo off
    setlocal enableextensions disabledelayedexpansion

    pushd "d:\somewhere\backups" && (
        for /f "skip=10 delims=" %%a in (
            'dir /b /ad /tc /o-d'
        ) do echo rmdir /s /q "%%~fa"
        popd
    )

它只是更改到指定的文件夹,获取文件夹的降序创建日期列表,跳过前十个并删除其余的

rmdir 命令仅回显到控制台。如果输出正确,去掉echo命令

【讨论】:

  • 这真是太好了。但为什么是 dir /o-d?这意味着,最旧的在列表的顶部,他会删除最新的?!还是我想错了?
  • @fuuman,按日期升序排列,从旧到新。按日期降序排列,列表从新到旧。由于for 将从列表的开头跳过,因此我们需要在开头使用较新的文件夹。
  • 啊好吧,太棒了。但是这个“%%~fa”是什么意思呢?这条线将如何用于删除文件而不是文件夹? 'do del /q "%%~fa"' 对我不起作用.. :\
  • @fuuman, %%~fafor 可替换参数%%a 引用的元素的完整路径。你在哪里看到del 命令?它不在我的代码中。如果您需要做的是删除文件,那么del 可以做到,但您需要更改dir 命令,因为它只要求文件夹(/ad
  • 我正在使用你的文件夹代码,现在我对文件也有同样的问题,所以我想自定义它。啊,好吧,你是对的。所以 dir /a-d 我认为是最好的。 //编辑:是的,它成功了! :)
【解决方案2】:

您使用的是哪个版本的 Windows?这适用于 XP 及更高版本:

RMDIR [/S] [/Q] [drive:]path
RD [/S] [/Q] [drive:]path

/S 除目录本身外,删除指定目录中的所有目录和文件。用于删除目录树。

/Q 安静模式,不询问是否可以用 /S 删除目录树。

有关详细信息,请参阅此处: http://www.computerhope.com/rmdirhlp.htm

【讨论】:

  • 请再仔细阅读问题。您的回答回答了原始问题。它不解决删除超过 10 天的目录。
猜你喜欢
  • 1970-01-01
  • 2012-03-26
  • 2017-05-26
  • 2017-10-29
  • 1970-01-01
  • 2010-09-08
  • 1970-01-01
  • 1970-01-01
  • 2015-10-19
相关资源
最近更新 更多