2009-06-21 48 views
0

条件:检测文件夹的内容是否已更改?

  • 的Windows 98 SE
  • WMI不可用

我的代码看起来像这样,用我的使用MSScript VBScript中的甾体包装写的。

do 
    a = files.collectfiles("c:\userver", "") 
    for i = 0 to ubound(a) 
     f = a(i) 
     if strings.endswith(f, ".usv") then 
      d = files.readfilee(f) 
      on error resume next 
      executeglobal d 
      nErr = err.number 
      sErr = err.description 
      on error goto 0 
      if nErr <> 0 then 
       trace "*** Error " & nErr & ", " & sErr 
      end if 
      files.deletefile f 
     end if 
    next 
    system.sleep 10 
    system.cooperate 
loop 

调用files.collectfiles时有很多磁盘活动。是否有某种方法可以检测文件夹内容的变化,而无需实际扫描文件夹中的文件?

回答

1

定义“更改文件夹的内容”。

如果这意味着文件已被添加,删除或重命名,则每当发生此类事件时都会更新文件夹的修改时间戳。

如果你想知道文件何时被修改,那么你需要阅读它们。

这就是说,看看你正在尝试做什么(扫描一个文件夹中的新.usv文件,并处理它们并删除它们),然后跟踪文件夹上的时间戳并在你之前更新它调用collectfiles是最好的(请注意,正确的日志时间只是在调用collectfiles之前,否则如果在collectfiles调用期间或之后立即添加文件,就会冒不醒来的风险)。

+0

链接总是有益的,但这种好的建议是非常棒的。非常感谢您的意见。 – bugmagnet 2009-06-22 02:21:51

0

你特别要求在VB中运行在win98上,我没有回答这个问题,但是MS有一个c/win32的例子来说明如何在Windows2000 +上用FindFirstChangeNotification来实现这个功能。另一件事是,.NET中的“FileSystemWatcher”显然不适用于Win98。我的观点是什么?这可能不是一个简单的解决方案,你必须自己想出一些东西。

相关问题