0

我需要为备份过程编写一个 .bat 文件。.bat 文件已经以以下格式成功运行:

2013-12-08
2013-13-08
2013-14-08

.
.
2013-12-09
2013-13-09
2013-14-09

这会在我们的服务器中占用更多空间,并且我们手动删除旧文件。所以,我需要一个 .bat 来自动删除上个月的文件。

4

2 回答 2

2

下面的批处理文件假设命令显示的格式echo %date%是YYYY-DD-MM;如果不是,则需要进行小幅调整。

编辑:我修改了下面的批处理文件以避免评论中报告的错误:

@echo off
setlocal EnableDelayedExpansion

rem Get the previous month
for /F "tokens=1,3 delims=-" %%a in ("%date%") do (
   set prevYear=%%a
   set month=%%b
)
if "%month:~0,1%" equ "0" set month=%month:~1%
set /A prevMonth=month-1
if "%prevMonth%" equ "0" (
   set /A prevMonth=12, prevYear-=1
)
if %prevMonth% lss 10 set prevMonth=0!prevMonth!

rem Delete the files of previous month
for /F "tokens=1-3 delims=-" %%a in ('dir /B *.*') do (
   if %%c equ %prevMonth% del %prevYear%-%%b-%%c
)
于 2013-09-14T15:40:33.573 回答
1

如果您使用的是 Windows Vista 或更高版本,则可以使用forfiles命令

forfiles /D -30 /P C:\your\backyup\folder\ /M *.bak /C "del @file "

如果您可以删除 30 天前的文件,这大约是一个月,但不考虑当前/上个月。

于 2013-09-14T11:37:42.190 回答