使用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

(0)

相关推荐

  • 使用mysql事件调度器定时删除binlog

    MySQL的事件调度器可以精确到每秒钟执行一个任务,对于一些对数据实时性要求比较高的应用(例如:股票.赔率.比分等)就非常适合.先查看是否启动这个功能: 复制代码 代码如下: SELECT @@event_scheduler; 在使用这个功能之前必须确保 event_scheduler已开启,可执行: 复制代码 代码如下: SET GLOBAL event_scheduler = 1; 或我们可以在配置my.cnf文件 中加上event_scheduler = 1然后来对 binlog 的删除写

  • vbs 定时删除功能实现代码

    参考代码一: 复制代码 代码如下: Function DeleteLog( )    Dim objFSO, objFolder, strPath, targetFSO, subFSO, DirPath       DirPath = createobject("Scripting.FileSystemObject").GetFile(Wscript.ScriptFullName).ParentFolder.Path&"\Log\"    Set objFS

  • php定时删除文件夹下文件(清理缓存文件)

    那么有没有方法自动清理临时文件夹呢? 以下代码就是一个简单定时清理文件夹下文件的php代码. ps:这个代码如果不重启网站会一直执行下去,所以只用作于本地环境测试,请别在网站上测试. 复制代码 代码如下: <?php ignore_user_abort(); //客户端断开时,可以让脚本继续在后台执行 set_time_limit(0); //忽略php.ini设置的脚本运行时间限制 $interval = 5*60; //设置执行周期,单位为秒,5分钟为 5*60=300 do{ $dir =

  • 定时删除一个文件夹内的所有子文件夹和文件的方法

    在win9x的年代,用deltree这个外部命令就很容解决这个问题,不过从windows 2000 及windows xp之后,就取消了这个命令(真的是很奇怪),那么现在怎么解决呢?大家可能想到用 del+rd来解决这个问题.但有个问题,就是rd命令会删除您指定的目录.例如,当前目录结构如下: D:\>attrib /s /d d:\test\*.* A    R  I    D:\test\1.txt          此文件带有只读属性 A   H   I    D:\test\2.txt 

  • Shell定时删除指定时间之前的文件

    最近世界杯来了,一直忙于工作和世界杯之间,都没有空来管管我的blog了,今天只能整个简单的小shell给大家了.公司要求删除一个月之前的备份文件,免得把硬盘给整爆了,上服务器看了下,居然都有3个月的备份没有清理了,还好是sql备份,不然硬盘空间早就满了. 下面是我的解决办法: 复制代码 代码如下: cat delbak.sh #!/bin/sh location="/root/sqlbak/" find $location -mtime +30 -type f |xargs rm -f

  • Windows和Linux下定时删除某天前的文件的脚本

    以前做到最多的定时我们就是定时备份功能了,我们常用利用定时功能来备份网站数据或备份数据库了,下面我来给(www.jb51.net)大家介绍几个Linux与Windows中定时删除某天前的文件方法,这个与备份有点区别,但大同小义了. Windows下bat文件内容如下: 复制代码 代码如下: @echo off forfiles -p "D:\servers\apache2.2\logs" -s -m *.log -d -15 -c "cmd /c del @path"

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

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

  • linux的一个find命令配合rm删除某天前的文件方法

    语句写法:find 对应目录 -mtime +天数 -name "文件名" -exec rm -rf {} \; 例1: 将/usr/local/backups目录下所有10天前带"."的文件删除 find /usr/local/backups -mtime +10 -name "*.*" -exec rm -rf {} \; find:linux的查找命令,用户查找指定条件的文件 /usr/local/backups:想要进行清理的任意目录 -

  • Linux使用shell脚本定时删除历史日志文件

    1.tools目录文件结构 [root@www tools]# tree tools/ tools/ ├── bin │ ├── del_history_files │ └── etc ├── del_history_files.cfg 2 directories, 2 files 2.删除历史文件脚本 del_history_files [root@www tools]# more tools/bin/del_history_files #!/bin/sh # 删除指定目录下,文件时间早于指定

  • 用批处理文件自动备份文件及文件夹,并自动删除n天前的文件

    下是备份的批处理,添加到"计划任务"中,设定时间自动运行 复制代码 代码如下: @echo off rem 格式化日期 rem date出来的日期是"2006-02-22 星期三",不能直接拿来使用,所以应该先格式化一下 rem 变成我们想要的.date:~0,4的意思是从0开始截取4个字符 set d=%date:~0,4%%date:~5,2%%date:~8,2% rem 设定压缩程序路径,这里用的是WINRAR的rar.exe进行打包的 set path=C

  • cmd forfiles 从文件夹或树中选择要进行批处理的文件(方便批量删除n天前的文件)

    FORFILES [/P pathname] [/M searchmask] [/S] [/C command] [/D [+ | -] {yyyy-MM-dd | dd}] 描述: 选择一个文件(或一组文件)并在那个文件上 执行一个命令.这有助于批处理作业. 参数列表: /P pathname 表示开始搜索的路径.默认文件夹是当前工作的 目录 (.). /M searchmask 根据搜索掩码搜索文件.默认搜索掩码是 '*'. /S 指导 forfiles 递归到子目录.像 "DIR /S&q

  • 用Python脚本来删除指定容量以上的文件的教程

    文件多了乱放, 突然有一天发现硬盘空间不够了, 于是写了个python脚本搜索所有大于10MB的文件,看看这些大文件有没有重复的副本,如果有,全部列出,以便手工删除 使用方式 加一个指定目录的参数 比如python redundant_remover.py /tmp 主要用到了stat模块,os.sys系统模块 import os, sys #引入统计模块 from stat import * BIG_FILE_THRESHOLD = 10000000L dict1 = {} # filesiz

  • Vbs脚本经典教材(最全的资料还是MSDN)

      -为什么要使用Vbs? 在Windows中,学习计算机操作也许很简单,但是很多计算机工作是重复性劳动,例如你每周也许需要对一些计算机文件进行复制.粘贴.改名.删除,也许你每天启动计算机第一件事情就是打开WORD,切换到你喜爱的输入法进行文本编辑,同时还要播放优美的音乐给工作创造一个舒心的环境,当然也有可能你经常需要对文本中的某些数据进行整理,把各式各样的数据按照某种规则排列起来--.这些事情重复.琐碎,使人容易疲劳. 第三方软件也许可以强化计算机的某些功能,但是解决这些重复劳动往往事倍功半,

  • Java实现文件夹中内容定时删除

    今天我和大家分享一下用Java实现对一个文件夹中内容定时删除. 让我们来看一下对一个文件夹中内容定时删除的功能. 对于文件的删除就是用File类中的delete()方法删除当前File所表示的文件或者目录(空目录),不过这里要注意对于目录的删除是要判断该目录是否是空目录,不是空目录不能删除,还需要对该目录进行递归查找该目录里的文件并删除,如果递归查找的还是目录,那么继续进行上面的操作. 定时功能呢?java.util包中有一个Timer类,Timer类用于创建定时器类,Timer类中有sched

随机推荐