【问题标题】:Delete files based on name根据名称删除文件
【发布时间】:2017-04-05 03:29:57
【问题描述】:

我有一个批处理文件,可以将文件归档为格式为“DAILY-yyyymmdd”的 ZIP,我只想保留 15 天的文件。例如每日20170405,每日20170504。

我想知道是否有一种方法可以使用 forfile(或类似方法)根据文件的名称(而不是日期/时间戳)删除文件?我无法使用日期/时间戳,因为有时这些已损坏并且可能会晚/提前几周。

我使用了以下内容,但这使用了日期/时间戳: for /f "skip=15 eol=: delims=" %%F in ('dir /b /o-d *.7z') do (del "%%F" )

【问题讨论】:

    标签: batch-file


    【解决方案1】:

    您的命名方案允许对日期进行字典排序,因此您可以按名称(而不是日期)进行反向排序:

    for /f "skip=15 eol=: delims=" %%F in ('dir /b /o-n *.7z') do ( del "%%F" )
    

    【讨论】:

    • 非常感谢。这实际上是查看日期还是只是订购它们并跳过前 15 个文件?如果系统错过了 3 天,它会只保留 15 个最近的文件吗?
    • 是的,/o-n 按名称降序排列,skip=15 跳过 15 个(最近的)项目。
    猜你喜欢
    • 2019-03-03
    • 1970-01-01
    • 2018-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多