Pregunta

Condiciones:

  • Windows 98 SE
  • WMI no disponible

Tengo un código que se ve así, escrito usando mi envoltura esteroide de 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

Hay mucha actividad de disco con esa llamada a files.collectfiles. ¿Hay alguna forma de detectar un cambio en el contenido de una carpeta sin escanear realmente la carpeta en busca de archivos?

¿Fue útil?

Solución

Definir " cambio en el contenido de una carpeta " ;.

Si significa que se agregó, eliminó o renombró un archivo, la marca de tiempo modificada de la carpeta se actualiza cada vez que se produce dicho evento.

Si, por el contrario, desea saber cuándo se modifican los archivos, deberá leerlos.

Dicho esto, observando lo que estás tratando de hacer (escanea una carpeta en busca de nuevos archivos .usv, y procesalos y elimínalos), luego solo realiza un seguimiento de la marca de tiempo en la carpeta y actualízala justo antes de llamar collectfiles es lo mejor (tenga en cuenta que el momento correcto para iniciar sesión es ANTES de llamar a collectfiles, de lo contrario corre el riesgo de no despertarse si se agrega un archivo durante la llamada de collectfiles o inmediatamente después).

Otros consejos

Hay una muestra que dice funcionar en todas las versiones desde Win95 hasta al menos WinXP. Desarrollado bajo Win98 con VB5. Utilizando las funciones SHChangeNotify * indocumentadas (¿entonces? Proporcionó enlaces al documento a continuación).

SHChangeNotifyRegister: reciba notificaciones de cambio de shell

Función SHChangeNotifyRegister SHChangeNotifyDeregister Function

Hay otra solución usando ReadDirectoryChangesW aquí:

VB6 WinAPI ReadDirectoryChangesW (verifique la quinta publicación de Yang Kok Wah)

Usted solicitó específicamente algo en VB y se ejecuta en win98 y no tengo respuesta para esto, pero MS tiene un ejemplo ac / win32 sobre cómo lograr esto en Windows2000 + con FindFirstChangeNotification . Otra cosa es que aparentemente " FileSystemWatcher " en .NET no funciona / compatible con Win98. ¿Cuál es mi punto? Tal vez no haya una solución fácil para esto y tenga que encontrar algo por su cuenta.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top