Batch file 获取上个月名称-批处理文件

Batch file 获取上个月名称-批处理文件,batch-file,Batch File,我需要为备份过程编写一个.bat文件。.bat文件已以以下格式成功运行: 2013-12-08 2013-13-08 2013-14-08 . . . 2013-12-09 2013-13-09 2013-14-09 这会占用服务器更多的空间&我们会手动删除旧文件。所以,我需要一个.bat来自动删除上个月的文件 如果您使用的是Windows Vista或更高版本,则可以使用该命令 forfiles /D -30 /P C:\your\backyup\folder\ /M *.bak /C "de

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

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

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

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

forfiles /D -30 /P C:\your\backyup\folder\ /M *.bak /C "del @file "
如果您可以删除30天的旧文件,这大约是一个月,但不考虑当前/前一个月

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

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

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

下面的批处理文件假定
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
)

下面的批处理文件假定
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
)

这不起作用,错误消息是
1!此时发生意外。
,更好:
如果“!month:~0,1!”eq“0”
(我不知道为什么,这是
延迟扩展
?)。您还需要在1月份进行治疗,
00
无效:)这不起作用,错误消息是
1!此时发生意外。
,更好:
如果“!month:~0,1!”eq“0”
(我不知道为什么,这是
延迟扩展
?)。您还需要对1月份进行处理,
00
无效:)这将删除过去30天内生成的文件,包括本月的文件(如果已经存在)。这将删除过去30天内生成的文件,如果已经存在,则包括本月的文件。