我论坛看到了 Batcher 的一个代码,在方案六中可以实现此功能。但是我的情况还是和他有点小小的不一样。
1.我的目录下还有其它文件
2.我的文件命名是rolling.2012-07-01 09.51.53.1.log ,他给的例子是bak-2009-12-25.log
所以我把代码修改了一下。
将 set "FileDate=!FileDate:~4,10!" 更改为了 set "FileDate=!FileDate:~8,10!"
我以为这段话的意思是从文件名第五位开始,到第十位结束。所取得的日期数据,但似乎还不是。
是可以删除了一些文件,但是发现一些其它文件也被删除了,不知道为什么请大家帮忙
del /f /q "D:\DevApp\RemoteMeterInterface\20100818\Global.asax"
del /f /q "D:\DevApp\RemoteMeterInterface\20100818\Logon.aspx"
del /f /q "D:\DevApp\RemoteMeterInterface\20100818\rolling.2012-08-01 09.40.53.1.log"
del /f /q "D:\DevApp\RemoteMeterInterface\20100818\rolling.2012-08-01 09.41.40.1.log"
del /f /q "D:\DevApp\RemoteMeterInterface\20100818\rolling.2012-08-01 09.42.14.1.log"
del /f /q "D:\DevApp\RemoteMeterInterface\20100818\rolling.2012-08-01 09.42.52.1.log"
del /f /q "D:\DevApp\RemoteMeterInterface\20100818\rolling.2012-08-01 09.43.32.1.log"
del /f /q "D:\DevApp\RemoteMeterInterface\20100818\rolling.2012-08-01 09.44.17.1.log"
del /f /q "D:\DevApp\RemoteMeterInterface\20100818\rolling.2012-08-01 09.44.52.1.log"
批处理原代码:- @echo off
- ::演示:删除指定路径下指定天数之前(以文件名中包含的日期字符串为准)的文件。
- ::如果演示结果无误,把del前面的echo去掉,即可实现真正删除。
- ::本例假设文件名中包含的日期字符串(比如:bak-2009-12-25.log)
-
- rem 指定待删除文件的存放路径
- set SrcDir=C:\Test\BatHome
- rem 指定天数
- set DaysAgo=1
-
- >"%temp%\DstDate.vbs" echo LastDate=date()-%DaysAgo%
- >>"%temp%\DstDate.vbs" echo FmtDate=right(year(LastDate),4) ^& right("0" ^& month(LastDate),2) ^& right("0" ^& day(LastDate),2)
- >>"%temp%\DstDate.vbs" echo wscript.echo FmtDate
- for /f %%a in ('cscript /nologo "%temp%\DstDate.vbs"') do (
- set "DstDate=%%a"
- )
- set DstDate=%DstDate:~0,4%-%DstDate:~4,2%-%DstDate:~6,2%
-
- setlocal enabledelayedexpansion
- for /r "%SrcDir%" %%a in (*.*) do (
- set "FileDate=%%~na"
- set "FileDate=!FileDate:~4,10!"
- if "!FileDate!" leq "%DstDate%" (
- if exist "%%a" (
- echo del /f /q "%%a"
- )
- )
- )
- endlocal
- pause
复制代码
|