使用vbs脚本定时删除n天前的文件
来源: 阅读:1148 次 日期:2016-06-30 09:26:24
温馨提示: 小编为您整理了“使用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

更多信息请查看脚本栏目
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!

2025国考·省考课程试听报名

  • 报班类型
  • 姓名
  • 手机号
  • 验证码
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map