首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >写入批处理文件以删除每种类型的最新X文件以外的所有文件

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

Stack Overflow用户
提问于 2018-11-13 14:28:39
回答 1查看 249关注 0票数 0

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

  • 备份-日-2018-11-13_000000.bak
  • 备份-日-2018-11-12 000 000
  • 备份-日-2018-11-11_000000.bak
  • 备份-时-2018-11-13_110000.bak
  • 备份-时-2018-11-13_130000.bak
  • 备份-时-2018-11-13_150000.bak

等。

所以我的脚本现在看起来如下

代码语言:javascript
运行
复制
@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*" was unexpected at this time.

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

所以留给我的是

  • 备份-日-2018-11-13_000000.bak
  • 备份-日-2018-11-12 000 000
  • 备份-时-2018-11-13_130000.bak
  • 备份-时-2018-11-13_150000.bak
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-13 14:41:06

我不知道你想用这个频率达到什么目的,但我会集中讨论你实际上想要达到的目标:

代码语言:javascript
运行
复制
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代替它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53283237

复制
相关文章

相似问题

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