2009-06-21 8 views
0

Conditions:Détecter si le contenu d'un dossier a changé?

  • Windows 98 SE
  • WMI pas disponible

J'ai le code qui ressemble à ceci, écrit en utilisant mon emballage stéroïdien de VBScript en utilisant MSScript.

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 

Il y a beaucoup d'activité de disque avec cet appel à files.collectfiles. Existe-t-il un moyen de détecter une modification dans le contenu d'un dossier sans réellement analyser le dossier pour les fichiers?

Répondre

1

Définir "modification du contenu d'un dossier".

Si cela signifie qu'un fichier a été ajouté, supprimé ou renommé, l'horodatage modifié du dossier est mis à jour chaque fois qu'un tel événement se produit.

Si vous souhaitez plutôt savoir quand les fichiers sont modifiés, vous devez les lire. Cela dit, en regardant ce que vous essayez de faire (analyser un dossier pour de nouveaux fichiers .usv, les traiter et les supprimer), puis simplement suivre l'horodatage sur le dossier et le mettre à jour juste avant que vous call collectfiles est le meilleur (notez que l'heure correcte de se connecter est juste AVANT d'appeler collectfiles, sinon vous risquez de ne pas vous réveiller si un fichier est ajouté pendant l'appel collectfiles ou immédiatement après).

+0

Les liens sont toujours utiles, mais ce genre de bons conseils est merveilleux. Merci beaucoup pour votre contribution. – bugmagnet

0

Vous avez spécifiquement demandé quelque chose en VB et en cours d'exécution sur win98 et je n'ai pas de réponse pour cela, mais MS a un exemple c/win32 sur la façon d'y parvenir sur Windows2000 + avec FindFirstChangeNotification. Une autre chose est que apparemment "FileSystemWatcher" dans .NET ne fonctionne pas/pris en charge sur Win98. Quel est mon point? Il n'y a peut-être pas de solution facile et vous devez trouver quelque chose par vous-même.

2

Il existe un exemple qui prétend fonctionner sur toutes les versions de Win95 jusqu'à WinXP. Développé sous Win98 avec VB5. En utilisant le (alors? Liens fournis au document ci-dessous) non documenté SHChangeNotify * Fonctions.

SHChangeNotifyRegister: Receive Shell Change Notifications

SHChangeNotifyRegister Function SHChangeNotifyDeregister Function

Il y a une autre solution en utilisant ReadDirectoryChangesW ici:

VB6 WinAPI ReadDirectoryChangesW (vérifier le 5ème poste de Yang Kok Wah)

Questions connexes