Preciso configurar algum tipo de script na minha máquina Vista, para que, sempre que um arquivo seja adicionado a uma pasta específica, ele acione automaticamente um processo em segundo plano que funcione no arquivo. (O processo em segundo plano é apenas um utilitário de linha de comando que aceita o nome do arquivo como argumento, além de outras opções predefinidas.)
Eu gostaria de fazer isso usando recursos nativos do Windows, se possível, por motivos de desempenho e manutenção. Examinei o uso do Agendador de tarefas, mas depois de examinar o sistema por um tempo, não consegui entender muito bem, e nem tenho certeza se ele é capaz de fazer o que eu preciso.
Gostaria muito de receber sugestões. Obrigado!
windows
windows-vista
automation
scheduled-tasks
bigmattyh
fonte
fonte
Respostas:
No trabalho, usamos o Powershell para monitorar pastas.
Pode ser usado desde o Windows Vista (.NET e PowerShell está pré-instalado) sem nenhuma ferramenta adicional.
Este script monitora uma determinada pasta e grava um arquivo de log. Você pode substituir a ação e fazer o que quiser, por exemplo, chamar uma ferramenta externa
Arquivo de log de exemplo
StartMonitoring.ps1
Como usar
$watcher.Path = "D:\source"
$watcher.Filter = "*.*"
$watcher.IncludeSubdirectories = $true
StartMonitoring.ps1
Para interromper o monitoramento, basta fechar a janela do PowerShell
Leitura adicional
fonte
StartWatching.ps1
janela para interromper o monitoramento. O segundo script só funciona se você incluí-lo em seu primeiro roteiro para salvar as variáveis$created
,$changed
,$deleted
ou$renamed
Você parece estar nas linhas corretas - você pode usar o agendador de tarefas para executar um arquivo .bat ou .cmd regularmente e esse arquivo pode começar com uma linha para verificar a existência do arquivo necessário - na verdade, eu verificaria a inexistência do arquivo; por exemplo:
Você também pode modificar esse código e executá-lo em um loop com um atraso de, por exemplo, 1 minuto no loop e, em seguida, colocar uma referência ao arquivo em lotes na pasta de inicialização do Windows:
Existem outras maneiras de obter um atraso de acordo com a versão do Windows em execução e quais kits de recursos adicionais foram instalados, mas o comando PING praticamente funciona em todas as circunstâncias. No comando PING acima, 10 PINGS fantasmas são executados com um atraso de 6000ms (ou seja: 6 segundos) entre eles. Você pode jogar com esses valores para obter o atraso necessário entre os loops de arquivos em lote.
fonte
-n 10
vs-n 1
.IF NOT EXIST C:\NO_SUCH_FILE_EVER.foo
. Hackish, mas funciona. Obrigado pela ideia.Obrigado a todos pelas sugestões.
Acabei escrevendo um VBScript que era basicamente baseado na idéia do Linker3000 de pesquisar a pasta e usar o Agendador de Tarefas para executá-lo na inicialização. Acabei obtendo a sintaxe básica desse recurso e fiz os ajustes necessários.
Eu ainda gostaria de otimizá-lo em algum momento, tendo a coragem do script em execução em um sistema orientado a eventos, mas fiquei sem tempo para trabalhar nele e, bem, isso é bom o suficiente.
Aqui está o script, caso alguém esteja interessado (com o segmento de conversão irrelevante redigido para maior clareza):
(Além disso, não quero deixar esta pergunta oficialmente sem resposta - e odeio aceitar minha própria resposta à pergunta - mas fiz um voto positivo à resposta do Linker3000 como agradecimento!)
fonte
Você pode olhar para o DropIt (gratuito). O programa é apropriado para processar arquivos recebidos de algumas maneiras automatizadas. Você pode mover, copiar, excluir e passar parâmetros para outros programas de linha de comando para converter imagens, dividir PDFs etc.
fonte
Se a ação for apenas copiar arquivos alterados, você poderá usar robocopy / MON
Não sei se a robocópia usa o FileSystemWatcher ou funciona pesquisando alterações
fonte
Ou você pode usar o Watch 4 Folder . Aparentemente, é Freeware, portátil e compatível com o Windows 7. Eu não tentei, mas o encontrei através de uma pesquisa na web e pensei em transmiti-lo.
Também gosto do script VBS, também apresentado no site.
fonte
Também encontrei um vigia que parece bem grande, e um watchexec menor que eu não tentei.
fonte
Usamos a ferramenta comercial (ou seja, não é gratuita) Folder Poll em http://www.myassays.com/folder-poll para fazer exatamente isso. É um aplicativo do Windows que inclui um aplicativo de gerenciamento amigável para permitir uma configuração fácil. Além disso, há uma opção de configuração XML. A pesquisa de pasta real é executada como um serviço do Windows (é iniciada automaticamente em cada reinicialização). Quando um novo arquivo é detectado em uma pasta pesquisada, um aplicativo pode ser iniciado automaticamente (você pode especificar seus próprios argumentos de linha de comando personalizados). Também pode fazer outras coisas, como copiar / mover arquivos. Além disso, a atividade pode ser registrada em um arquivo de log e há outras operações avançadas.
fonte