Question

Conditions:

  • Windows 98 SE
  • WMI non disponible

J'ai un code qui ressemble à ceci, écrit en utilisant mon habillage 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

Cet appel à files.collectfiles est très actif sur le disque. Existe-t-il un moyen de détecter une modification du contenu d'un dossier sans analyser le dossier à la recherche de fichiers?

Était-ce utile?

La solution

Définir "changement dans le 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, regardez ce que vous essayez de faire (recherchez les nouveaux fichiers .usv dans un dossier, puis traitez-les et supprimez-les), puis gardez simplement trace de l'horodatage du dossier et mettez-le à jour juste avant d'appeler. collectfiles est préférable (notez que le bon moment pour vous connecter est AVANT d'appeler collectfiles, sinon vous courez le risque de ne pas vous réveiller si un fichier est ajouté lors de l'appel collectfiles ou immédiatement après.).

Autres conseils

Il existe un exemple qui prétend fonctionner sur toutes les versions de Win95 à au moins WinXP. Développé sous Win98 avec VB5. Utilisation des fonctions SHChangeNotify * non documentées (alors fournies? Vers le document ci-dessous).

SHChangeNotifyRegister: Recevoir les notifications de modification de shell

Fonction SHChangeNotifyRegister Fonction SHChangeNotifyDeregister

Il existe une autre solution utilisant ReadDirectoryChangesW ici:

VB6 WinAPI ReadDirectoryChangesW (consultez le cinquième message de Yang Kok Wah)

Vous avez spécifiquement demandé quelque chose en VB et fonctionniez sur win98 et je n’ai pas de réponse à vous donner, mais MS a un exemple ac / win32 sur la façon de réaliser cela sous Windows 2000 + avec FindFirstChangeNotification . Une autre chose est qu'apparemment, < FileSystemWatcher " dans .NET ne fonctionne pas / pris en charge sur Win98. Quel est mon point? Il n’ya peut-être pas de solution facile à cela et vous devez trouver quelque chose par vous-même.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top