• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    使用vbs脚本定时删除N天前的文件

    脚本放在定时任务里代替服务定时执行一些操作比较方便,下面是实现删除文件夹下N天前创建的文件的vbs脚本,在配置文件 DelFolderList.txt 中配置要删除的文件路径,ONLY-DEL-FILES 下的路径 是只删除其下的文件,不删除其内的子目录的文件。DEL-FOLDER-FILES下的路径 是删除其内文件及其子目录内的文件,子目录为空时删除目录,删除的文件list 放在log文件夹内。例配置文件DelFolder.txt 内容如下:

    ONLY-DEL-FILES
    E:\Code\test
    DEL-FOLDER-FILES
    E:\Code\subfolder

    脚本内容:

    复制代码 代码如下:

    Option Explicit
    dim mFSO    '定义文件系统对象
    dim wFSO    '定义文件系统对象
    DIM filecount '文件计数
    dim foldercount '文件夹计数

    dim fstream    '定义读文件流对象
    dim wstream    '定义写文件流对象

    dim folder    '文件夹对象
    dim rootfolder    '文件夹对象
    dim file    '文件对象
    dim Subdirs     '文件夹集合对象
    dim subdir        '文件夹对象
    dim LoopFolder    '文件夹对象
    dim dopath    '路径字符串

    Dim delFlag
    delFlag =0  ' 0: 不删除子目录   ,1:删除子目录

    DIM WSH
    SET WSH=WSCRIPT.CreateObject("WSCRIPT.SHELL")'击活WScript.Shell对象
    main()

    sub main()
    dim filename
    filecount = 0
    foldercount = 0
    Set mFSO = CreateObject("Scripting.FileSystemObject")
    Set wFSO = CreateObject("Scripting.FileSystemObject")
    Set fstream = mFSO.OpenTextFile("DelFolderList.txt", 1)
    filename=Cstr(Date)
    filename=filename + "_" + Replace(Cstr(Time),":","_")
    Set wstream = wFSO.CreateTextFile("log\" filename ".log", TRUE)
    '循环读取一行filelist.txt中的内容
    Do While True > fstream.AtEndOfStream
       dopath = fstream.ReadLine
       If dopath = "ONLY-DEL-FILES" Then
          delFlag =0
       If True > fstream.AtEndOfStream Then
       dopath = fstream.ReadLine
       End If
       End If

       If dopath = "DEL-FOLDER-FILES" Then
          delFlag =1
       If True > fstream.AtEndOfStream Then
            dopath = fstream.ReadLine
       End if
       End If

       if mFSO.FolderExists(dopath) Then
           If 1 = delFlag Then ' 删除子目录

           set rootfolder=mFSO.GetFolder(dopath)
           wstream.WriteLine(rootfolder.path " 下删除了以下文件:")
           del_file_subFolder rootfolder
           wstream.WriteLine(rootfolder.path " 下删除了以下文件夹:")
           del_folderFunc rootfolder
        'del_folderFunc rootfolder
            wstream.WriteBlankLines(1) 
       Else '只删除文件
         set rootfolder=mFSO.GetFolder(dopath)
            wstream.WriteLine(rootfolder.path " 下删除了以下文件:")
            del_file rootfolder
            wstream.WriteBlankLines(1)
       End If
       else
            WSH.POPUP("文件夹“" dopath "”不存在或路径错误")
            wstream.WriteLine("文件夹“" dopath "”不存在或路径错误")
        end if
    Loop
    fstream.Close
        

    'WSH.POPUP("共删除文件" filecount "个、文件夹" foldercount "个")
    end sub

    sub del_file(folder)
        dim df        '标记
        For Each file In folder.files
            df=DateDiff("d",file.DateCreated,Now)
            If (df>1) Then '1天前的文件
                wstream.WriteLine(folder.path "\" file.Name vbTab file.DateCreated)
                file.Delete()
                filecount=filecount+1
            End If
        Next
    end Sub

    ''删除文件 同时删除subfolder
    sub del_file_subFolder(folder)
        dim df        '标记
        For Each file In folder.files
            df=DateDiff("d",file.DateCreated,Now)
            If (df>1) Then
                wstream.WriteLine(folder.path "\" file.Name vbTab file.DateCreated)
                file.Delete()
                filecount=filecount+1
            End If
        Next
        '递归调用del_file函数,实现子目录文件的遍历删除
        If (0 Folder.SubFolders.Count ) then
            For Each loopfolder in folder.SubFolders
            del_file_subFolder loopfolder
            Next
        End If
    end sub


    sub del_folderFunc(folder)
        dim loopsub
        dim tmp
        if 0=folder.subfolders.Count Then    '判断其下是否还有子文件夹,若无
            if 0=folder.files.Count then    '如果其下还有文件则退出(符合条件的文件上一步已删掉了)
                if Ucase(folder.path)>Ucase(dopath) then    '判断是否为根目录,是则退出,不是则删除
                    wstream.WriteLine(folder.path vbTab folder.DateCreated)
                    folder.delete
                    foldercount=foldercount+1
                     '' del_folderFunc(mFSO.GetFolder(delFolderPath))        '删除该文件夹后从根目录重新检查,以检查其父目录是否该删除
                end if
            End if
        else
            For Each subdir In folder.subfolders    '还有子文件夹则轮循每一个子文件夹
                del_folderFunc(subdir)
            Next
        End if

    end sub

    您可能感兴趣的文章:
    • php定时删除文件夹下文件(清理缓存文件)
    • 使用mysql事件调度器定时删除binlog
    • vbs 定时删除功能实现代码
    • Windows和Linux下定时删除某天前的文件的脚本
    • Shell定时删除指定时间之前的文件
    • 定时删除一个文件夹内的所有子文件夹和文件的方法
    上一篇:vbs实现的保存剪贴板中的文本并编辑或保存
    下一篇:vbs 定时删除功能实现代码
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    使用vbs脚本定时删除N天前的文件 使用,vbs,脚本,定时,删除,