Executar serviço quando o arquivo / pasta é modificado

1

Eu quero saber se existe a possibilidade de acionar um serviço quando uma pasta ou arquivo foi alterado.

Eu encontrei o sc triggerinfo, mas não sei se posso usá-lo para isso.

    
por Loy 26.02.2015 / 10:23

1 resposta

1

Sim, é possível de várias maneiras, por exemplo com o Power Shell Script :

Existem várias estratégias que você pode usar para monitorar o sistema de arquivos no PowerShell:

  • Crie um novo objeto System.IO.FileSystemWatcher e defina as configurações apropriadas:

    $watcher = New-Object System.IO.FileSystemWatcher
    $watcher.Path = $searchPath
    $watcher.IncludeSubdirectories = $true
    $watcher.EnableRaisingEvents = $true
    

    .Path é o caminho que será monitorado, .IncludeSubdirectories diz ao FileSystemWatcher para monitorar todos os subdiretórios do .Path

  • Agora precisamos definir alguns eventos que serão disparados quando o $ watcher detectar uma alteração no sistema de arquivos, definiremos um evento para Alterado, Criado, Excluído e Renomeado:

$changed = Register-ObjectEvent $watcher "Changed" -Action {
   write-host "Changed: $($eventArgs.FullPath)"
}
$created = Register-ObjectEvent $watcher "Created" -Action {
   write-host "Created: $($eventArgs.FullPath)"
}
$deleted = Register-ObjectEvent $watcher "Deleted" -Action {
   write-host "Deleted: $($eventArgs.FullPath)"
}
$renamed = Register-ObjectEvent $watcher "Renamed" -Action {
   write-host "Renamed: $($eventArgs.FullPath)"
}
  • Dentro de cada evento, você pode definir o código para o que você quer que aconteça quando o evento é acionado. Neste exemplo, estou exibindo diretamente o tipo de ação e o caminho completo do objeto alterado no sistema de arquivos.

  • Isso é muito bonito. Esses eventos permanecerão até que você feche sua sessão atual do PowerShell ou cancele manualmente o registro dos eventos. Você pode cancelar o registro dos eventos usando o comando Unregister-Event:

    Unregister-Event $changed.Id
    Unregister-Event $created.Id
    Unregister-Event $deleted.Id
    Unregister-Event $renamed.Id
    
por 26.02.2015 / 10:31