Erkennen, wenn der Inhalt eines Ordners geändert haben?
-
06-07-2019 - |
Frage
Bedingungen:
- Windows 98 SE
- WMI nicht verfügbar
Ich habe Code, der so aussieht, geschrieben MSScript mit meinem steroidale Umwickeln von VBScript verwenden.
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
Es gibt eine Menge von Plattenaktivität mit diesem Aufruf an files.collectfiles. Gibt es irgendeine Art und Weise eine Änderung in den Inhalt eines Ordners des Erfassens, ohne tatsächlich Scannen der Ordner für Dateien?
Lösung
Define "Änderung der Inhalt eines Ordners".
Wenn es bedeutet, dass eine Datei hinzugefügt, gelöscht oder umbenannt, wird der modifizierte Zeitstempel des Ordners aktualisiert wird, wenn ein solches Ereignis eintritt.
Wenn Sie stattdessen wissen wollen, wenn Dateien geändert werden, dann müssen Sie sie lesen.
Das heißt, schauen, was Sie versuchen, (Scan einen Ordner für neue .usv Dateien und verarbeiten sie und löschen Sie sie) zu tun, dann der Zeitstempel nur die Verfolgung auf den Ordner und aktualisieren es richtig, bevor Sie anrufen collectfiles ist am besten (beachten Sie, dass die richtige Zeit ist, melden Sie sich einfach collectfiles vor dem Aufruf, sonst laufen Sie Gefahr, nicht aufwachen laufen, wenn eine Datei hinzugefügt wird während der collectfiles anrufen oder unmittelbar danach).
Andere Tipps
Es ist eine Probe, die bis zu bei leas WinXP auf allen Versionen von Windows 95 arbeiten behauptet. Entwickelt unter Win98 mit VB5. Mit den (dann? Ausgebrachten Links auf die Doku unten) nicht dokumentiert SHChangeNotify * Funktionen.
SHChangeNotifyRegister: Receive Shell Change Notifications
SHChangeNotifyRegister Funktion SHChangeNotifyDeregister Funktion
Es gibt eine andere Lösung mit ReadDirectoryChangesW hier:
VB6 WinAPI ReadDirectoryChangesW (überprüfe den fünften Beitrag von Yang Kok Wah)
Sie speziell für etwas in VB und läuft auf Win98 gefragt und ich habe keine Antwort für diese, aber MS hat ac / win32 Beispiel dafür, wie diese mit FindFirstChangeNotification . Eine andere Sache ist, dass scheinbar " Filesystemwatcher “in .NET funktioniert nicht / auf Win98 unterstützt. Was ist mein Punkt? Es gibt vielleicht keine einfache Lösung für dieses und Sie müssen sich etwas einfallen lassen auf eigene Faust.