Domanda

Condizioni:

  • Windows 98 SE
  • WMI non disponibile

Ho un codice simile a questo, scritto usando il mio wrapping steroideo di VBScript usando 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

C'è molta attività su disco con quella chiamata a files.collectfiles. Esiste un modo per rilevare una modifica nel contenuto di una cartella senza effettivamente scansionare la cartella alla ricerca di file?

È stato utile?

Soluzione

Definisci " modifica nel contenuto di una cartella " ;.

Se significa che un file è stato aggiunto, eliminato o rinominato, il timestamp modificato della cartella viene aggiornato ogni volta che si verifica un evento del genere.

Se invece vuoi sapere quando i file vengono modificati, dovrai leggerli.

Detto questo, guardando cosa stai cercando di fare (scansiona una cartella alla ricerca di nuovi file .usv, elaborali ed eliminali), quindi tieni semplicemente traccia del timestamp sulla cartella e aggiornalo subito prima di chiamare collectfiles è il migliore (si noti che il momento giusto per accedere è solo PRIMA di chiamare collectfile, altrimenti si corre il rischio di non svegliarsi se un file viene aggiunto durante la chiamata di collectfiles o immediatamente dopo).

Altri suggerimenti

Esiste un esempio che afferma di funzionare su tutte le versioni da Win95 fino a WinXP. Sviluppato sotto Win98 con VB5. Utilizzando le funzioni (quindi? Fornite nel seguente documento) SHChangeNotify * non documentato.

SHChangeNotifyRegister: Ricevi notifiche di modifica shell

SHChangeNotifyRegister Function SHChangeNotifyDeregister Function

Esiste un'altra soluzione che utilizza ReadDirectoryChangesW qui:

VB6 WinAPI ReadDirectoryChangesW (controlla il quinto post da Yang Kok Wah)

Hai specificamente richiesto qualcosa in VB e funzionante su win98 e non ho una risposta per questo, ma MS ha un esempio ac / win32 su come ottenere questo risultato su Windows 2000 + con FindFirstChangeNotification . Un'altra cosa è che apparentemente " FileSystemWatcher " in .NET non funziona / supportato su Win98. Qual è il mio punto? Forse non esiste una soluzione semplice per questo e devi inventarti qualcosa da solo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top