分享

删除N天以前修改过的文件,代码

 BorisBlog 2017-03-30
一、以下是用Forfiles来完成。

::    删除N天以前修改过的文件。
@echo off
set date=2            ::设定要删除多少天以前修改过的文件。
set FilePath=d:\test  ::设定要删除的文件目录。

forfiles /p %FilePath% /d -%date% /s /m *.* /c "cmd /c del /f @path"
echo 已经删除了修改日期为%date%天以前的文件,请按任意键继续...
pause>nul

::    删除指定目录及其子目录下的空文件夹(安静版)   
for /l %%i in (1 1 10)do (for /f "delims=" %%a in ('dir /b/s/ad "%FilePath%"') do ( 2>nul rd "%%a\"))


::    蓝色(1 1 10)其中的10指的是你目录中文件夹的层数。填写大于你文件夹的层数。例:d:\a\b\c\d 这里只有三层就到d了。所   以我们只要填4就可以了。一般十层也够多了。当然你也可填100。只不过运行速度稍有影响。

::  蓝色d:\a\指的是你要删除空文件夹所在的目录。

::    例:d:\ (删除d盘下。包括子父级内的所有空文件夹)  或者d:\a\ (删除d盘a目录下。包括子父级内的所有空文件夹)

echo 已经删除了"%FilePath%"目录下的全部空目录,请按任意键退出程序...
pause>nul
@exit

例二:用vbs代码来完成。

Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("Wscript.Shell")
OlderThanDate = DateAdd("d", -0, Now)  '如果要删除3日前的文件,将0为-3
    Set c_folder = fso.GetFolder("D:\test")
    Set c_fileCollection = c_folder.Files
    For Each c_file In c_fileCollection
       If c_file.DateLastModified < OlderThanDate Then
          ff = 1 '此文件夹中有文件
       End If
    Next
    Set c_folderCollection = c_folder.SubFolders
    For Each c_subFolder In c_folderCollection
       If c_subFolder.DateLastModified < OlderThanDate Then
          sff = 1 '此文件夹中有子文件夹
       End If
    Next
If ff or sff then '此文件夹中有文件或子文件夹
   DeleteOldFiles "D:\test", OlderThanDate
   objShell.Run("%comspec% /c xcopy D:\test Z:\SPBK-D /Y /S /E"),1,True
   DeleteOldFiles "D:\test", OlderThanDate
End if
Set objShell = Nothing
set fso = nothing


Sub DeleteOldFiles(folderName, BeforeDate)
    Dim folder, file, fileCollection, folderCollection, subFolder
    Set folder = fso.GetFolder(folderName)
    Set fileCollection = folder.Files
    For Each file In fileCollection
       If file.DateLastModified < BeforeDate Then
          fso.DeleteFile(file.Path) '删除文件
       End If
    Next
    Set folderCollection = folder.SubFolders
    For Each subFolder In folderCollection
       subFolder.delete '删除子文件夹
       'DeleteOldFiles subFolder.Path, BeforeDate 如果只是删除子文件夹下的文件而不删除子文件夹,可以使用此行
    Next
End Sub

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多