bat批处理文件 删除制定文件夹当前日期3个月以前的文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bat批处理文件 删除制定文件夹当前日期3个月以前的文件相关的知识,希望对你有一定的参考价值。

bat批处理文件 删除制定文件夹下,当前日期3个月以前的文件
希望有确认日期的显示
或者说删除N天前的文件

Set fso = CreateObject("scripting.filesystemobject")
folder="." '文件夹路径,点为当前路径
set fol=fso.getfolder(Folder)
for each i in fol.files
datefile = fso.getfile(i).Datelastmodified
dt=datediff("m",datefile,now)
if datevalue(datefile)<=datevalue(dateadd("m",dt-3,now)) then fso.deletefile i
next

'经测试.凡是3个月之前的文件都会被删除
'保存为vbs类型文件
参考技术A 如果是数据库备份等每天只有一个文件的情况,如下批处理保留最新的90个文件。
@echo off
set n=90
pushd d:\backup
for /f "skip=%n% tokens=*" %%i in ('dir/b/o-d') do rd "%%i"

如果每天文件数不一定的话,需要用vbs计算日期再删除,稍微复杂些,需要的话再追问或百度hi交流下追问

不是数据库备份
是删除过期文件

参考技术B @echo off
::需要Win2003/Vista/Win7系统自带的forfiles命令的支持
rem 指定待删除文件的存放路径
set SrcDir=C:\Test\Test
rem 指定天数
set DaysAgo=90
::如果演示没问题,请把下一行的 echo 删掉再运行,以便真正删除。
forfiles /p %SrcDir% /s /m *.* /d -%DaysAgo% /c "cmd /c echo del /f /q /a @path"
pause

删除指定路径下指定天数之前(以文件的最后修改日期为准)的文件:BAT + VBS

代码如下:

@echo off
::演示:删除指定路径下指定天数之前(以文件的最后修改日期为准)的文件。
::如果演示结果无误,把del前面的echo去掉,即可实现真正删除。
::本例调用了临时VBS代码进行日期计算,并统一设置系统日期格式,处理完毕
::之后再把日期格式恢复成原来的状态。摆脱了对reg命令(XP系统自带)的依赖。
rem 指定待删除文件的存放路径
set SrcDir=C:/Test/BatHome
rem 指定天数
set DaysAgo=1
>"%temp%/BackupDate.vbs" echo Set WshShell = WScript.CreateObject("WScript.Shell")
>>"%temp%/BackupDate.vbs" echo WScript.Echo WshShell.RegRead ("HKEY_CURRENT_USER/Control Panel/International/sShortDate")
for /f %%a in (‘cscript /nologo "%temp%/BackupDate.vbs"‘) do (
    set "RegDateOld=%%a"
)
>"%temp%/UnifyDate.vbs" echo Set WshShell = WScript.CreateObject("WScript.Shell")
>>"%temp%/UnifyDate.vbs" echo WshShell.RegWrite "HKEY_CURRENT_USER/Control Panel/International/sShortDate", "yyyy-M-d", "REG_SZ"
cscript /nologo "%temp%/UnifyDate.vbs"
>"%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%
for /r "%SrcDir%" %%a in (*.*) do (
    if "%%~ta" leq "%DstDate%" (
        if exist "%%a" (
            echo del /f /q "%%a"
        )
    )
)
>"%temp%/RecoverDate.vbs" echo Set WshShell = WScript.CreateObject("WScript.Shell")
>>"%temp%/RecoverDate.vbs" echo WshShell.RegWrite "HKEY_CURRENT_USER/Control Panel/International/sShortDate", "%RegDateOld%", "REG_SZ"
cscript /nologo "%temp%/RecoverDate.vbs"
pause

  

以上是关于bat批处理文件 删除制定文件夹当前日期3个月以前的文件的主要内容,如果未能解决你的问题,请参考以下文章

请问:如何批处理删除文件夹及其所有子文件夹下N天前所有文件?

bat批处理,定时执行删除某文件

怎样用bat删除制定的文件/文件夹?

批处理(bat)批量打开文件夹下的所有PDF文档

bat创建以当前日期命名的文件夹

怎样利用批处理自动删除某路径下的过期文件夹