Como monitorar uma pasta para alterações e executar um comando, se houver, no Windows?

32

Existem perguntas semelhantes para Linux e Mac , mas estou procurando uma solução para Windows aqui.

O problema é o seguinte: Quero gravar vários arquivos de script (js) em uma pasta e ter um programa que monitore essa pasta para alterações de arquivos e novos arquivos sendo adicionados, e execute um comando sempre que isso acontecer (para compilá-los todos em um só único arquivo).

A solução tem que:

  1. Monitore as alterações de arquivos e os novos arquivos que estão sendo adicionados em uma pasta.
  2. Execute um comando apenas se houver alguma alteração.

Seria melhor se fosse uma solução interna (como um trecho JScript ou VBscript) ou algo que não requer instalação.

Camilo Martin
fonte
consulte este blog para alguns aplicativos para Windows.
Vijay

Respostas:

3

Existe um programa chamado Belvedere que pode fazer o truque.

http://ca.lifehacker.com/341950/belvedere-automates-your-self+cleaning-pc

É um aplicativo do Windows independente que é executado em segundo plano.

Eu o configurei para monitorar minha pasta de downloads em busca de arquivos com determinadas extensões com datas da última modificação de um dia. Os arquivos que ele encontra excluem, mas você pode executar uma ação.

dangowans
fonte
Uau - esse parece super legal. Vou escolher isso como uma resposta (mesmo que eu já tenha conseguido o que precisava de outro), pois provavelmente é muito mais útil e versátil do que o que estou usando para outras pessoas (e talvez eu no futuro!) . +1 e aceito!
Camilo Martin
2
O Belvedere me fez perder horas para descobrir que está cheio de bugs não resolvidos , especialmente com comandos personalizados. Tente o FolderMonitor (e use "{0}{1}"no campo de parâmetro, incluindo as aspas). Único problema: você não pode definir um comando separado para cada pasta. Apenas um, globalmente.
fregante 14/05
@ bfred.it Belvedere tem seus problemas, mas funcionou para mim. O FolderMonitor também parece uma boa solução. Eu acho que é o que o usuário faz a pergunta acabou com .
dangowans 14/05
13

Eu tive um bom sucesso com um programa antigo chamado Log Monitor. É antigo e há muito abandonado. Mas serve muito bem ao propósito.

http://www.freeware-guide.com/download/index2.html

Prumo
fonte
11
Ah obrigada. Atualmente, estou testando outro utilitário , mas +1!
Camilo Martin
essa "coisa" impressionante está funcionando perfeitamente no Windows 10!
mboullouz
7

Eu criei um utilitário simples para esse fim: https://github.com/benblamey/when_changed

use: when_changed (caminho do arquivo) (comando) (parâmetros opcionais)

Por exemplo, quando C: \ somedir \ foo.txt myapp.exe foi alterado na barra 123

Ben
fonte
Eu gosto de como essa é uma API elegante. Ele suporta pastas recursivamente?
Camilo Martin
Sim: when_changed C: \ ** .txt foo.exe Eu queria uma versão sem dep do github.com/joh/when-changed para Windows.
Ben
6

Com as pastas de relógio .NET, isso é realmente fácil de codificar. Tenho certeza que alguém já fez esse programa.

Acabei de encontrar esta jóia para você http://www.guidingtech.com/9861/automate-folder-actions-windows-watch-4-folder/

bokan
fonte
Estou ciente de como é fácil codificar isso no .NET - eu simplesmente não queria. Mas eu estou tentando este que é gratuito, pode apenas funcionar também! +1 para a recomendação, também parece bom.
Camilo Martin
4

Atualmente, estou experimentando este aplicativo , que requer .NET, mas parece que ele faz o trabalho.

Camilo Martin
fonte
2

Esse é um requisito tão comum que fico surpreso por não haver um utilitário conveniente incorporado ao próprio sistema operacional.

De qualquer forma, como mencionado anteriormente, eu usei o LogMonitor com sucesso no passado. No entanto, achei este post informativo e estou usando o Watch 4 Folder agora.

Espero que isso ajude você.

Vijay
fonte
+1, mas eu não diria que é um "requisito comum" para qualquer pessoa, exceto nós, desenvolvedores ... E, nesse caso, existem chamadas de sistema para monitorar o sistema de arquivos, o que é considerado "integração do SO", eu acho.
Camilo Martin
11
Bem, eu estava vendo isso da perspectiva das empresas e do compartilhamento de rede. Você sempre quer saber a quem culpar quando um arquivo desaparece: P. Estou no meio de diagnosticar uma situação assim agora: /
Vijay
2

Se você deseja criar uma solução interna usando JScript ou VBScript, o que deseja procurar é o monitoramento do sistema de arquivos usando assinaturas de eventos WMI. Basicamente, você escreve o código para monitorar uma pasta e executar as ações quando uma alteração é detectada, como:

  • __InstanceCreationEvent
  • __InstanceDeletionEvent
  • __InstanceModificationEvent

... e seu script é executado em um intervalo, observando a ocorrência desses eventos. Existem muitos recursos, mas aqui estão alguns para VBScript e Powershell:

mrTomahawk
fonte
1

NirSoft possui software para monitorar alterações de arquivos no Windows
FolderChangesView

O FolderChangesView é uma ferramenta simples que monitora a pasta ou a unidade de disco escolhida e lista todos os nomes de arquivos que estão sendo modificados, criados ou excluídos enquanto a pasta está sendo monitorada. Você pode usar o FolderChangesView com qualquer unidade de disco local ou com um compartilhamento de rede remoto, desde que tenha permissão de leitura para a pasta selecionada.

insira a descrição da imagem aqui

você pode baixá-lo gratuitamente aqui
Mais informações

AminM
fonte
Parece mais uma ferramenta de informação / depuração do que uma de automação, mas ainda interessante.
Camilo Martin #
0

Você pode usar http://jnotify.sourceforge.net/, que assina eventos de monitoramento de sistema de arquivos específicos do sistema operacional. O código tem anos, mas ainda funciona (pelo menos no Windows Server 2013r2 eu estava testando ontem).

Também há a ressurreição do projeto jnotify pelo github em https://github.com/redbooth/jnotify, que não oferece aplicativo de demonstração independente, mas (de acordo com os logs de confirmação) corrige alguns bugs.

No java7, deveria haver algum tipo de sistema de arquivos semelhante a inotify, mas eu ainda não estava testando.

andrej
fonte