【问题标题】:Deleting all files except the most 3 recent in a folder and sub folders删除文件夹和子文件夹中除最近 3 个文件之外的所有文件
【发布时间】:2016-02-29 18:47:07
【问题描述】:

为了清理我们的备份文件夹,我编写了一个简短的批处理文件,它将通过任务计划程序运行以定期清除除 3 个最新副本之外的所有文件。

目前我有以下

for /f "skip=3 eol=: delims=" %%F in ('dir /b /o-d *.sqb ^| findstr /r /c:"LOG_.*"') do @del "%%F"

这将适用于包含批处理文件的文件夹中的文件,但是我想从更高级别运行它以检查所有备份,我尝试了 /s 命令,但这些只留下了 3 个最新的我需要在每个文件夹和子文件夹中保留 3 个最新文件的所有文件夹中

【问题讨论】:

  • 我建议包装一个 for /R /D 以递归方式枚举目录...

标签: windows batch-file subdirectory


【解决方案1】:

首先按目录递归循环:

for /r /d %%a in (*) do (
    for /f "skip=3 eol=* delims=" %%b in ('dir /b /a-d /o-d "%%a\*LOG*.sqb"') do (
        del "%%~fb"
    )
) 2>nul

【讨论】:

  • 似乎遇到了一个错误,它在主目录的子目录中查找文件之一。
  • 是的,看到更新的代码,现在使用完整路径
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多