日期:2014-05-17  浏览次数:20901 次

bat命令怎么实现删除一个月以前的文件???在线等
朋友测试需要用bat命令删除过期文件,请大神现身相助,感谢!

------解决方案--------------------
晕,发出来才发现打掉了一对引号,重新发

BatchFile code

::删除创建日期超过指定天数的文件 --- Forever Young [2011-11-17]

@echo off

::把需要保留多少天内创建的文件天数赋值给sDay,举例:保留30天内的
set sDay=30

::指定要操作的路径,这里举例:c:\test
set workPath=c:\test

::处理日期格式,因为各语言版本的操作系统日期格式有所不同
set rp="HKCU\Control Panel\International"
for /f "tokens=3" %%a in ('reg query %rp% /v sdate^|findstr /i "sdate"') do (set sDate=%%a)
for /f "tokens=3" %%a in ('reg query %rp% /v idate^|findstr /i "idate"') do (set iDate=%%a)

::得到当日的天数
call :GetToday %date%

::转到需要操作的路径
pushd %workPath%

::处理文件日期信息,我这里使用了两次不同的获取方式,目的就是准确的得到创建日期和文件名
::如果不需要获取创建日期,可以减少一次循环
setlocal enabledelayedexpansion
for %%i in (*) do (
 for /f "tokens=1" %%a in ('dir /tc "%%i"^|findstr "[0-9]*\%sDate%[0-9]*\%sDate%[0-9]*"') do (
  set tmpDate=%%a
  set tmpDate=!tmpdate:%sDate%= !
  call :GetDays !tmpDate!
  set /a dtweens=%tdays% - !days!
  if !dtweens! gtr %sDay% (del /f /q "%%i")
 )
)
pause
exit

::处理日期到天数的转换
:GetDays
if %iDate%==0 (set YY=%3&set MM=%1&set DD=%2)
if %iDate%==1 (set YY=%3&set MM=%2&set DD=%1)
if %iDate%==2 (set YY=%1&set MM=%2&set DD=%3)
IF %MM:~0,1% EQU 0 SET MM=%MM:~1%
IF %DD:~0,1% EQU 0 SET DD=%DD:~1%
set /a Days=%DD%-32075+1461*(%YY%+4800+(%MM%-14)/12)/4+367*(%MM%-2-(%MM%-14)/12*12)/12-3*((%YY%+4900+(%MM%-14)/12)/100)/4
goto :eof 

::处理当日日期的获取
:GetToday
echo %1|findstr [0-9]>nul||shift
set dn=%1
set dn=%dn:/= %
call :GetDays %dn%
set tdays=%Days%

------解决方案--------------------
批处理删除指定天数日期之前的文件
http://bbs.bathome.net/thread-3334-1-1.html