如何用批处文件删除N天前以日期规律命名的文件,文件的名字为 abc0116-0205.xls 2017-02-13 221047 或者 ef0123609-0123315.xls 2017-02-13 083946 ,就是文件的名字前部分长度什么的没有规律,后部分都 2017-02-13 083946 这样,年-月-日 时分秒,怎么用BAT文件来实现?
下面的例子只能删除bak-2009-12-25格式命名的文件,对我的这些不起作用,请高手帮忙解决下- @echo off
- ::演示:删除指定路径下指定天数之前(以文件名中包含的日期字符串为准)的文件。
- ::如果演示结果无误,把del前面的echo去掉,即可实现真正删除。
- ::本例假设文件名中包含的日期字符串(比如:bak-2009-12-25.log)
- rem 指定待删除文件的存放路径
- set SrcDir=H:/Test1
- rem 指定天数
- set DaysAgo=5
- >"%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
复制代码
|