标签:style blog class code java color
最近某个用到的第三方程序会产生很多日志文件在logs目录中,每天一个log文件,类似 2014-05-07001.log。日积月累这个目录文件数量非常多,手动清除还是比较麻烦的。
由于这个软件不是自己开发的,无法改变log产生机制,于是想到找个BAT放到计划任务中定时删除这些文件。
网上找到几个BAT都无法正确运行,估计是别人转载的时候也没真正使用过,于是我在别人代码的基础上略加修改现在可以正常运行了:
@echo off&setlocal enabledelayedexpansion set ds=7 set di=d:\Soft\logs set "dy=%date:~,4%" set "dm=%date:~5,2%" set "dd=%date:~8,2%" echo 当前日期为:%dy%年%dm%月%dd%日 echo. if %dm:~,1%==0 set "dm=%dm:~1%" if %dd:~,1%==0 set "dd=%dd:~1%" set/a "dd-=ds" if !dd! gtr 0 goto ok echo 正在计算%ds%天前的日期... :ry set /a "feb=^!(!dy!&3)+28" if "%dy:~2,2%" equ "00" set/a "feb=feb-1+^!(dy:~,2&3)" if %feb%==29 echo %dy%年是闰年 echo. :tyt set n=0 set/a "dm-=1" if %dm% equ 0 ( set/a "dy-=1,dm=12,dd+=31" if %dd% gtr 0 (goto ok )else goto ry ) for %%a in (31 %feb% 31 30 31 30 31 31 30 31 30 31) do ( set/a n+=1 if !n! equ %dm% set/a "dd+=%%a") if %dd% leq 0 goto tyt :ok set/a "ymd=dy*10000+dm*100+dd" echo. echo 前%ds%天的日期是%ymd:~,4%年%ymd:~4,2%月%ymd:~6,2%日 echo 正在获取文件日期再进行比较 echo 并删除%ds%天前创建并且%ds%天内未修改过的文件... cd/d "%di%" for /f "delims=" %%i in (‘dir/a/a-d/b‘)do ( Set "strymdx=%%~ti%" Set "xdy=!strymdx:~,4!" Set "xdm=!strymdx:~5,2!" Set "xdd=!strymdx:~8,2!" Set "ymdx=!xdy!!xdm!!xdd!" Rem set ymdx=!ymdx~,4!!ymdx~5,2!!ymdx~8,2! echo %%i,ymd=%ymd%,ymdx=!ymdx!,ti=%%~ti if !ymdx! lss %ymd% ( if "%%i" neq "%~nx0" del/f "%%i")) echo. echo 处理完毕!即将退出... @pause
自动运行的时候请将最后一行的@pause 去掉,这样cmd窗口就可以自动关闭了
DOS删除某目录中几天前的文件,布布扣,bubuko.com
标签:style blog class code java color
原文地址:http://www.cnblogs.com/relax/p/3714062.html