Pergunta

Condições:

  • Windows 98 SE
  • WMI não está disponível

Eu tenho o código que se parece com isso, escrito usando o meu embrulho esteróide 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

Há um monte de atividade do disco com essa chamada para files.collectfiles. Existe alguma maneira de detectar uma mudança no conteúdo de uma pasta sem realmente a digitalização da pasta para arquivos?

Foi útil?

Solução

Definir "mudança no conteúdo de uma pasta".

Se isso significa que um arquivo foi adicionado, excluído ou renomeado, então o timestamp modificado da pasta é atualizado sempre que tal evento ocorrer.

Se você está querendo, em vez de saber quando os arquivos são modificados, então você vai precisar para lê-los.

Isso disse, olhando para o que você está tentando fazer (digitalizar uma pasta para novos arquivos .usv, e processá-los e excluí-los), então é só acompanhar o timestamp na pasta e atualizá-lo para a direita antes de chamar collectfiles é melhor (nota que o momento correto de log é apenas antes de chamar collectfiles, caso contrário você corre o risco de não acordar se um arquivo é adicionado durante os collectfiles ligar ou imediatamente depois).

Outras dicas

Há uma amostra que diz trabalhar em todas as versões de Win95 até em leas WinXP. Desenvolvido sob Win98 com VB5. Usando os (links então? Prestados ao docu abaixo) indocumentados SHChangeNotify * Funciona.

SHChangeNotifyRegister: Receba Shell notificações de alteração

SHChangeNotifyRegister Função SHChangeNotifyDeregister Função

Não há outra solução usando ReadDirectoryChangesW aqui:

VB6 WinAPI ReadDirectoryChangesW (verifique o quinto posto de Yang Kok Wah)

Você pediu para algo em VB e em execução no win98 e eu não tenho resposta para isso, mas MS tem exemplo ac / win32 sobre como conseguir isso em Windows2000 + com FindFirstChangeNotification . Outra coisa é que, aparentemente, " FileSystemWatcher " em .NET não está funcionando / suportada em Win98. Qual é o meu ponto? Há talvez há uma solução fácil para isso e você tem que vir com algo em seu próprio país.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top