有一个文件夹,每天有新的文件被创建时,那么另一个程序就把这个文件复制走,但并不删除这个文件,如果每次拷贝就删除这个文件的话,这种处理还好做,关键是不能删除里面的文件,而要把刚刚创建的文件考走.不知该怎么做?
thanks

解决方案 »

  1.   

    监视非常消耗资源 必须要这么做吗?
    --------------------------------'建立一个记录最后文件建立时间的变量
    Dim dLast As Date
    Dim dLast_tmp As Date
    '监控的文件夹
    Dim sfld As String
    '复制目标路径
    Dim tfld As String
    '用timer控制监视
    Sub timer1_timer()
    '用Fso取得文件列表(包括name,DateCreated)
        Dim fso, f, f1, fc
        Set fso = CreateObject("Scripting.FileSystemObject")
        Set f = fso.GetFolder("c:\")
        Set fc = f.Files
        For Each f1 In fc
        Debug.Print f1.Path
            If f1.DateCreated > dlaset Then
                FileCopy f1.Path, tfld &"\" & f1.name
                If dLast_tmp < f1.DateCreated Then dLast_tmp = f1.DateCreated
            End If
        Next
        dLast = dLast_tmp
    End Sub
    原理就是这样的
    但是 上面的代码有很大的问题
    1 新文件产生的速度如何?如果是同时产生很多个文件 那么复制文件的速度很可能赶不上文件产生的速度
      那么就麻烦大了.
    2 有1而产生的:timer的inerval应该多大?
    3 文件只增加不删除 那么即使你用超大型机 也有崩溃的那一天。
      

  2.   

    If f1.DateCreated > dlaset Then
    --------------------------------]
    If f1.DateCreated > dlast Then
      

  3.   

    to fzx4936,请问具体消耗多少资源:)这方面我实践的很少,多看少说:)
      

  4.   

    to  bcrun老师:
    我测试过 当然我的cpu比较垃圾 是p4 2.8的
    去掉Debug.Print f1.Path
    100个文件3M左右的文件
    interval=100 cpu使用率大概在30%左右
    interval=200 cpu使用率大概在20%左右 
    interval=500 cpu使用率大概在10%左右
      

  5.   

    windows外壳扩展编程实现几个特定的接口就可以了
      

  6.   

    简单的就是使用Timer对父文件夹进行监视,发现了新的文件夹就拷贝走,不过应该不需要那么频繁的进行扫描吧?如果很紧要,建议还是使用公用的服务器好。