当前位置: 首页 > 知识库问答 >
问题:

写入批处理文件以删除除每种类型的最新X文件之外的所有文件

濮阳浩穰
2023-03-14

我正在尝试创建一个应该每天运行一次的批处理文件,它应该删除除最新文件之外的所有备份文件,比如说每种类型的2个。所以我有这样的文件:

>

  • 备份-每日-2018-11-13_000000.bak
  • 备份-每日-2018-11-12_000000.bak
  • 备份-每日-2018-11-11_000000.bak

    backup-HOURLY-2018-11-13\u 110000。bak公司

    目前我的脚本如下

    @ECHO off
    
    SET frequency=%*
    for %%x in (%frequency%) do (
      for /f "*-%%x*" %%a in ('dir /ad /b /o-d^|more +2') do echo @file
    )
    

    但是我得到了错误*-%x*"此时出乎意料。

    该脚本应该实现的是,一旦每天运行,我应该拥有每种类型(每天、每小时)的最新2个备份文件。现在我只是想打印需要保存的文件。

    所以留给我的应该是

    >

  • backup-DAILY-2018-11-13\u000000。bak
  • backup-DAILY-2018-11-12\u000000。bak公司

    backup-HOURLY-2018-11-13\u 130000。bak公司

  • 共有1个答案

    干弘深
    2023-03-14

    我不确定您正试图通过频率实现什么,但无论如何,我将重点关注您实际想要实现的目标:

    for /F "skip=2 eol=: delims=" %%i in ('dir /b /o-d *DAILY*') do echo "%%i"
    for /F "skip=2 eol=: delims=" %%i in ('dir /b /o-d *HOURLY*') do echo "%%i"
    

    因此,我们按照日期的相反顺序排序,然后跳过前两个文件(最新的),删除其余的,我们只需为每种类型运行两个单独的循环,每小时和每天。它可以合并到单个for循环中,但我认为这足够简单。

    显然,一旦您确认echo符合您的要求,请将其替换为del。。

     类似资料:
    • 我已经创建了一个批处理文件,将文件名中带有xxxx*的文件移动到临时文件夹,然后使用第二个命令forfiles删除原始目录中早于xx天的任何文件,然后使用robocopy/MOVE将所有其他文件移回原始目录。是否有一种方法可以运行forfiles命令从原始控制器中删除所有早于-xx天的文件,但名称中包含xxxx*的文件除外,而无需来回移动文件? 我的原始代码是:

    • 问题内容: 问题: 如何删除目录中除最新3个文件以外的所有文件? 查找最新的3个文件很简单: 但是我需要找到除最新的3个文件之外的所有文件。我该怎么做,以及如何在同一行中删除这些文件而又不会造成不必要的for循环? 我为此使用Debian Wheezy和bash脚本。 问题答案: 这将列出所有文件,但最新的三个除外: 这将删除这些文件: 这还将列出点文件: 并使用dotfiles删除: 但请注意:

    • 问题内容: 我想 删除所有当前目录下的内容 除了 对文件夹之前,我的新文件复制到分支。 linux的命令是什么? 问题答案: 重置索引很便宜,所以 然后,您可以重置索引(使用)或直接继续签出新分支。

    • 问题内容: 我正在尝试编写python脚本来删除X天之前的文件夹中的所有文件。这是我到目前为止所拥有的: 运行脚本时,我得到: , 并给出文件名。我究竟做错了什么? 问题答案: 返回裸文件名列表。它们没有完整的路径,因此您需要将其与包含目录的路径合并。您在删除文件时执行此操作,但在文件删除时(或在执行任一操作时)则不执行此操作。 最简单的解决方案是在循环的顶部执行一次: 现在是文件的完整路径,您可

    • 如何使用批处理脚本从文件中删除最后n行 我对批处理文件没有任何想法,我是第一次编写批处理文件。 我应该如何编写此批处理文件? 对于Windows7 试一试

    • 有关删除数据的Firebase文档中说: 删除数据 删除数据的最简单方法是对数据位置的引用调用remove()。 还可以通过将null指定为另一个写入操作(如set()或update())的值来删除。您可以将此技术与update()结合使用,在单个API调用中删除多个子项。 有谁能解释一下,我认为最后一行可以帮助我删除firebase文件夹中的所有文件是什么意思?