脚本放在定时任务里代替服务定时执行一些操作比较方便,下面是实现删除文件夹下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

标签:
定时删除,N天前

免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
白云城资源网 Copyright www.dyhadc.com

评论“使用vbs脚本定时删除N天前的文件”

暂无“使用vbs脚本定时删除N天前的文件”评论...

《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线

暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。

艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。

《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。