我正在尝试创建一个应该每天运行一次的批处理文件,该文件应该删除除最新备份以外的所有备份文件,可以说每个类型2个。所以我有这样的文件:
backup-DAILY-2018-11-11_000000.bak
backup-HOURLY-2018-11-13_110000.bak
等
所以我的脚本当前如下所示
(P attend-projectile
=goal>
ISA goal
state nil
=visual-location>
screen-x =pos-x
screen-y =pos-y
?visual>
state free
==>
+visual>
cmd move-attention
screen-pos =visual-location
=goal>
state attended
last-pos (position pos-x screen-x pos-y screen-y)
)
但是我收到错误@ECHO off
SET frequency=%*
for %%x in (%frequency%) do (
for /f "*-%%x*" %%a in ('dir /ad /b /o-d^|more +2') do echo @file
)
该脚本应该实现的是,每天运行一次后,我应该拥有每种类型的最新两个备份文件(DAILY,HOURLY)。现在,我只是在尝试打印需要保留的文件。
所以我应该留下的是
backup-DAILY-2018-11-12_000000.bak
backup-HOURLY-2018-11-13_130000.bak
答案 0 :(得分:1)
我不确定您要尝试达到的频率是什么,但是,尽管如此,我还是将重点放在您实际想要实现的目标上:
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"
所以发生的是,我们按相反的日期对日期进行排序,然后跳过前两个文件(是最新的),然后删除其余的文件,我们只对每种类型分别每小时和每天运行2个单独的循环。可以将其合并到单个for循环中,但是我认为这很简单。
确认您的功能符合您的要求后,显然用echo
替换del
。