Como executar um comando shell quando um arquivo é adicionado (Windows e Mac)
Execute um comando ou script shell automaticamente quando um arquivo chega a uma pasta — no Windows e no Mac. Sem Task Scheduler, sem cron, sem AppleScript.
Executar um comando quando um arquivo aparece em uma pasta costumava significar Task Scheduler no Windows, cron ou AppleScript no Mac, ou o Hazel se você já estivesse em um Mac. O File Arbor faz isso com uma regra: escolha a pasta, corresponda os arquivos, selecione Executar comando e seu script roda uma vez por arquivo correspondente — do mesmo jeito no Windows e no macOS. É um recurso Pro, adicionado na versão 1.1.0.
Este guia mostra como configurá-lo, as variáveis que você tem à disposição, como testar um comando antes de confiar nele e algumas receitas que vale a pena copiar.
Por que isso é mais difícil do que deveria ser
A necessidade é simples: "quando um arquivo aparece aqui, faça algo com ele." As ferramentas é que normalmente não são.
No macOS, o Hazel executa scripts shell como ação de regra há anos. É excelente — e só funciona no Mac. Se você está no Windows, o Hazel não é uma opção e nunca será.
Os caminhos integrados são desajeitados. O Task Scheduler do Windows consegue executar um arquivo batch em um temporizador, mas ele vigia o relógio, não a pasta, e a lógica de correspondência é você quem escreve em forfiles ou PowerShell. No macOS, as Folder Actions e o cron funcionam, mas envolvem montar AppleScript ou cola de shell e depurá-la no Console. Nenhum desses dá a você uma lista dos arquivos processados nem do que cada comando imprimiu.
O que a maioria das pessoas quer mesmo é uma regra: corresponder um arquivo, executar um comando, ver o que aconteceu. É essa a lacuna que a ação Executar comando do File Arbor preenche, nas duas plataformas.
O que a ação Executar comando faz
Uma regra do File Arbor é um par SE/ENTÃO. O lado SE corresponde arquivos por extensão, padrão de nome, regex completo, tamanho ou idade. O lado ENTÃO é a ação. Executar comando é uma das ações, ao lado de mover, renomear, mover para a lixeira e excluir permanentemente.
Quando um arquivo corresponde — em uma execução manual, agendada ou no momento em que chega a uma pasta monitorada — o File Arbor executa seu comando uma vez para esse arquivo. No Windows ele roda pelo shell do sistema, por isso a sintaxe batch, o PowerShell e tudo o que estiver no seu PATH funcionam. No macOS também roda pelo shell, por isso suas ferramentas de linha de comando de sempre estão disponíveis. O mesmo modelo de regras, o mesmo editor, as duas plataformas.
Executar comando é um recurso Pro. Se você está no plano gratuito, pode desbloqueá-lo com uma licença Pro — compra única, com 30 dias de garantia de reembolso.
Como executar um comando quando um arquivo é adicionado
Aqui está a configuração completa. Leva cerca de dois minutos.
- Adicione a pasta que quer monitorar. Clique em Adicionar Pasta e escolha onde os arquivos chegam —
Downloads, uma pasta de projeto, o diretório de saída de um scanner, o que se adequar ao seu fluxo de trabalho. - Crie uma regra e defina as condições de correspondência. Adicione uma regra e defina o lado SE. Corresponda por extensão (
.md), por um padrão de nome, por um regex como^invoice_\d{4}\.pdf$, por um limite de tamanho ou por uma idade. Só os arquivos correspondentes disparam o comando. - Escolha Executar comando como ação. No lado ENTÃO, selecione Executar comando e escreva seu comando. Use as variáveis abaixo sempre que precisar do caminho ou do nome do arquivo.
- Teste o comando em um arquivo de amostra. Clique em Testar. O File Arbor executa o comando uma vez em uma amostra e mostra o código de saída, a saída e a duração. Corrija-o aqui, antes de ele chegar a rodar sem supervisão.
- Salve a regra e ative o Modo Automático. Salve-a e ative o Modo Automático para rodar em tempo real à medida que os arquivos chegam. Você também pode executar as regras manualmente ou de forma agendada.
É esse o ciclo inteiro. Sem arquivo batch, sem tarefa agendada, sem arquivos de script para manter separados da regra.
As variáveis que você pode usar
Dentro de um comando estão disponíveis três variáveis:
{filePath}— o caminho completo para o arquivo correspondente{fileName}— apenas o nome do arquivo, com a extensão{folder}— a pasta onde o arquivo está
O File Arbor as coloca entre aspas para você, então caminhos com espaços funcionam sem que você precise envolver nada em aspas. Você escreve {filePath}, não "{filePath}".
Teste antes de confiar
Um comando que roda sem supervisão só é útil se você souber que ele funciona. Duas coisas tornam isso seguro.
O botão Testar executa seu comando uma vez em um arquivo de amostra e informa o código de saída, a saída e o tempo que levou. Você vê exatamente o que o comando faz antes de salvar a regra.
O painel de Execuções de comandos registra cada execução real — o comando, o arquivo, o código de saída e a saída completa. Quando algo falha às 3 da manhã, você não está adivinhando. A saída está lá quando você for conferir.
Exemplos reais que vale a pena copiar
Fazer commit automático de notas para um repositório git. Solte um arquivo Markdown em uma pasta de notas e deixe que ele seja commitado automaticamente.
- Monitorar:
C:\Projects\notes(ou~/Projects/notesno Mac) - Corresponder: extensão é
.md - Comando:
git -C {folder} add {fileName} && git -C {folder} commit -m "Add {fileName}"
Comprimir vídeo no momento em que chega. Recodifique gravações de tela para economizar espaço.
- Corresponder: extensão é
.mov - Comando:
ffmpeg -i {filePath} -vcodec libx265 -crf 28 {folder}/compressed-{fileName}
Enviar exportações concluídas para fora da máquina. Envie um render para um servidor de backup com rsync ou scp.
- Corresponder: nome começa com
export_ - Comando:
rsync {filePath} backup:/media/incoming/
Avisar a si mesmo quando um arquivo específico chega. Dispare uma notificação da área de trabalho ou um webhook para saber que uma fatura ou um relatório entrou.
O padrão é sempre o mesmo: corresponda o arquivo, execute a ferramenta que você já usa. O File Arbor é o gatilho e o seletor de arquivos; seu comando faz o trabalho.
Como isso se compara aos scripts shell do Hazel
Se você chegou aqui vindo de um fluxo de trabalho do Hazel, o mapeamento é direto. A ação "run shell script" do Hazel e a ação Executar comando do File Arbor executam ambas um comando por arquivo correspondente, com acesso ao caminho do arquivo. A diferença é o alcance: o Hazel só roda no macOS, enquanto o File Arbor executa a mesma regra no Windows e no Mac. Para uma comparação lado a lado mais aprofundada, veja File Arbor vs Hazel.
O que o File Arbor não replica são os ganchos de scripting específicos do macOS do Hazel — AppleScript e condições de metadados do Spotlight. Se sua automação depende disso, o Hazel ainda leva vantagem no Mac. Para executar comandos e scripts em arquivos, os dois estão em pé de igualdade.
Limites e segurança
Algumas coisas para saber antes de montar algo importante:
- Uma execução por arquivo. Um arquivo correspondente dispara o comando uma vez, não em loop.
- Tempo limite de 30 segundos. Os comandos têm um tempo limite de 30 segundos por padrão, por isso um script travado não consegue paralisar suas outras regras.
- Não está na versão da Microsoft Store. A política da Store impede que os aplicativos executem comandos arbitrários, por isso a versão da Store não inclui Executar comando. O download direto o inclui.
Comece com um comando
Escolha uma coisa repetitiva que você faz com arquivos à mão — um commit, uma compressão, um upload — e transforme-a em uma única regra. Baixe o File Arbor e comece pelo plano gratuito, ou leia o que mais chegou na 1.1.0. É novo no aplicativo? O guia de introdução configura sua primeira regra em cerca de cinco minutos.
FAQ
O File Arbor consegue executar scripts shell como o Hazel?
Sim. A ação Executar comando do File Arbor executa qualquer comando ou script shell uma vez por arquivo correspondente, com as variáveis {filePath}, {fileName} e {folder}. Ela cobre o mesmo terreno que a ação de script shell do Hazel — e funciona no Windows, ao contrário do Hazel. É um recurso Pro.
Executar comandos em eventos de arquivos funciona no Windows?
Sim. O File Arbor executa comandos tanto no Windows quanto no macOS. No Windows ele roda pelo shell do sistema, por isso comandos batch, PowerShell e qualquer ferramenta no seu PATH funcionam. Não é preciso o Task Scheduler nem um arquivo batch à parte.
A ação Executar comando está disponível na versão gratuita?
Não. Executar comando é um recurso Pro — uma compra única de US$ 24,99 com 30 dias de garantia de reembolso. O plano gratuito continua incluindo as ações de mover, renomear e mover para a lixeira.
Por que Executar comando não está na versão da Microsoft Store?
A política da Microsoft Store impede que os aplicativos executem comandos arbitrários, por isso a versão da Store não inclui a ação Executar comando. Baixe o File Arbor diretamente em filearbor.com para obtê-la. Todos os outros recursos são idênticos nas duas versões.
O que acontece se meu comando travar ou falhar?
Os comandos têm um tempo limite de 30 segundos por padrão, por isso um script travado não consegue paralisar suas regras. Cada execução fica registrada no painel de Execuções de comandos com o código de saída e a saída completa, por isso uma falha às 3 da manhã estará esperando por você com todos os detalhes quando for conferir.
