Come eseguire un comando shell quando viene aggiunto un file (Windows e Mac)
Esegui un comando o uno script shell in automatico quando un file arriva in una cartella, su Windows e Mac. Niente Utilità di pianificazione, cron o AppleScript.
Un tempo eseguire un comando quando un file compare in una cartella significava l'Utilità di pianificazione su Windows, cron o AppleScript su Mac, oppure Hazel se eri già su Mac. File Arbor lo fa con una regola: scegli la cartella, individua i file, seleziona Esegui comando e il tuo script parte una volta per ogni file corrispondente — allo stesso modo su Windows e macOS. È una funzionalità Pro, introdotta nella versione 1.1.0.
Questa guida mostra come configurarlo, quali variabili hai a disposizione, come provare un comando prima di affidartici e qualche ricetta che vale la pena copiare.
Perché è più complicato del dovuto
L'esigenza è semplice: "quando un file arriva qui, facci qualcosa". Gli strumenti di solito non lo sono.
Su macOS, Hazel offre l'esecuzione di script shell come azione delle regole da anni. È ottimo — e solo per Mac. Se sei su Windows, Hazel non è un'opzione e non lo sarà mai.
Le strade integrate sono macchinose. L'Utilità di pianificazione di Windows può eseguire un file batch a tempo, ma guarda l'orologio, non la cartella, e la logica di corrispondenza la scrivi tu in forfiles o PowerShell. Su macOS, le Azioni cartella e cron funzionano, ma significano mettere insieme AppleScript o collante shell e poi farne il debug nella Console. Nessuna di queste ti dà un elenco dei file elaborati o di ciò che ogni comando ha stampato.
Quello che la maggior parte delle persone vuole davvero è una regola: individua un file, esegui un comando, vedi cosa è successo. È questo il vuoto che colma l'azione Esegui comando di File Arbor, su entrambe le piattaforme.
Cosa fa l'azione Esegui comando
Una regola di File Arbor è una coppia SE/ALLORA. Il lato SE individua i file per estensione, schema di nome, regex completa, dimensione o età. Il lato ALLORA è l'azione. Esegui comando è una delle azioni, insieme a sposta, rinomina, sposta nel cestino ed elimina definitivamente.
Quando un file corrisponde — in un'esecuzione manuale, in una pianificata o nel momento in cui arriva in una cartella monitorata — File Arbor esegue il comando una volta per quel file. Su Windows usa la shell di sistema, quindi funzionano la sintassi batch, PowerShell e qualsiasi cosa presente nel tuo PATH. Anche su macOS usa la shell, perciò i tuoi soliti strumenti da riga di comando sono disponibili. Stesso modello di regole, stesso editor, entrambe le piattaforme.
Esegui comando è una funzionalità Pro. Se sei sul piano gratuito, puoi sbloccarla con una licenza Pro — acquisto una tantum, con 30 giorni di garanzia di rimborso.
Come eseguire un comando quando viene aggiunto un file
Ecco la configurazione completa. Richiede circa due minuti.
- Aggiungi la cartella che vuoi monitorare. Clicca Aggiungi cartella e scegli dove arrivano i file —
Downloads, una cartella di progetto, la directory di output di uno scanner, qualunque cosa si adatti al tuo flusso di lavoro. - Crea una regola e imposta le condizioni di corrispondenza. Aggiungi una regola e definisci il lato SE. Corrispondenza per estensione (
.md), uno schema di nome, una regex come^invoice_\d{4}\.pdf$, una soglia di dimensione o un'età. Solo i file corrispondenti attivano il comando. - Scegli Esegui comando come azione. Sul lato ALLORA, seleziona Esegui comando e scrivi il comando. Usa le variabili qui sotto ovunque ti serva il percorso o il nome del file.
- Prova il comando su un file di esempio. Clicca Prova. File Arbor esegue il comando una volta su un esempio e mostra il codice di uscita, l'output e la durata. Correggilo qui, prima che venga eseguito senza supervisione.
- Salva la regola e attiva la Modalità automatica. Salvala, poi attiva la Modalità automatica per eseguirla in tempo reale quando i file arrivano. Puoi anche eseguire le regole manualmente o secondo una pianificazione.
Questo è l'intero ciclo. Niente file batch, niente attività pianificata, nessun file di script da mantenere separatamente dalla regola.
Le variabili che puoi usare
All'interno di un comando hai a disposizione tre variabili:
{filePath}— il percorso completo del file corrispondente{fileName}— solo il nome del file, con estensione{folder}— la cartella in cui si trova il file
File Arbor le mette tra virgolette al posto tuo, quindi i percorsi con spazi funzionano senza che tu debba racchiudere nulla. Scrivi {filePath}, non "{filePath}".
Prova prima di fidarti
Un comando che viene eseguito senza supervisione è utile solo se sai che funziona. Due cose lo rendono sicuro.
Il pulsante Prova esegue il comando una volta su un file di esempio e riporta il codice di uscita, l'output e la durata. Vedi esattamente cosa fa il comando prima di salvare la regola.
Il pannello Esecuzioni di comandi registra ogni esecuzione reale — il comando, il file, il codice di uscita e l'output completo. Quando qualcosa fallisce alle 3 di notte, non devi tirare a indovinare. L'output è lì che ti aspetta al momento del controllo.
Esempi reali da copiare
Commit automatico delle note in un repository git. Lascia cadere un file Markdown in una cartella di note e fai in modo che venga sottoposto a commit automaticamente.
- Monitora:
C:\Projects\notes(oppure~/Projects/notessu Mac) - Condizione: l'estensione è
.md - Comando:
git -C {folder} add {fileName} && git -C {folder} commit -m "Add {fileName}"
Comprimi i video appena arrivano. Ricodifica le registrazioni dello schermo per risparmiare spazio.
- Condizione: l'estensione è
.mov - Comando:
ffmpeg -i {filePath} -vcodec libx265 -crf 28 {folder}/compressed-{fileName}
Carica fuori sede gli export finiti. Invia un render a un server di backup con rsync o scp.
- Condizione: il nome inizia con
export_ - Comando:
rsync {filePath} backup:/media/incoming/
Avvisati quando arriva un file specifico. Attiva una notifica desktop o un webhook così sai che è arrivata una fattura o un report.
Lo schema è sempre lo stesso: individua il file, esegui lo strumento che già usi. File Arbor è il trigger e il selettore di file; il lavoro lo fa il tuo comando.
Come si confronta con gli script shell di Hazel
Se sei arrivato qui da un flusso di lavoro con Hazel, la corrispondenza è diretta. L'azione "esegui script shell" di Hazel e l'azione Esegui comando di File Arbor lanciano entrambe un comando per ogni file corrispondente con accesso al percorso del file. La differenza è la portata: Hazel funziona solo su macOS, mentre File Arbor esegue la stessa regola su Windows e Mac. Per un confronto più approfondito, vedi File Arbor vs Hazel.
Ciò che File Arbor non replica sono gli agganci di scripting specifici di macOS di Hazel — AppleScript e le condizioni sui metadati Spotlight. Se la tua automazione dipende da questi, su Mac Hazel ha ancora un vantaggio. Per eseguire comandi e script sui file, i due sono alla pari.
Limiti e sicurezza
Alcune cose da sapere prima di mettere in piedi qualcosa di importante:
- Un'esecuzione per file. Un file corrispondente attiva il comando una volta, non in loop.
- Timeout di 30 secondi. I comandi vanno in timeout dopo 30 secondi per impostazione predefinita, così uno script bloccato non può paralizzare le altre regole.
- Non presente nella versione del Microsoft Store. Le politiche dello Store impediscono alle app di lanciare comandi arbitrari, perciò la versione dello Store non include Esegui comando. Il download diretto la ha.
Inizia con un solo comando
Scegli una cosa ripetitiva che fai a mano sui file — un commit, una compressione, un caricamento — e trasformala in un'unica regola. Scarica File Arbor e parti dal piano gratuito, oppure leggi cos'altro è arrivato nella 1.1.0. Sei nuovo dell'app? La guida introduttiva configura la tua prima regola in circa cinque minuti.
FAQ
File Arbor può eseguire script shell come Hazel?
Sì. L'azione Esegui comando di File Arbor lancia qualsiasi comando o script shell una volta per ogni file corrispondente, con le variabili {filePath}, {fileName} e {folder}. Copre lo stesso terreno dell'azione script shell di Hazel — e funziona su Windows, cosa che Hazel non fa. È una funzionalità Pro.
L'esecuzione di comandi sugli eventi dei file funziona su Windows?
Sì. File Arbor esegue comandi sia su Windows sia su macOS. Su Windows usa la shell di sistema, quindi funzionano i comandi batch, PowerShell e qualsiasi strumento presente nel tuo PATH. Non servono l'Utilità di pianificazione né un file batch separato.
L'azione Esegui comando è disponibile nella versione gratuita?
No. Esegui comando è una funzionalità Pro: un acquisto una tantum da 24,99 $ con 30 giorni di garanzia di rimborso. Il piano gratuito include comunque le azioni sposta, rinomina e sposta nel cestino.
Perché Esegui comando non c'è nella versione del Microsoft Store?
Le politiche del Microsoft Store impediscono alle app di lanciare comandi arbitrari, perciò la versione dello Store non include l'azione Esegui comando. Scarica File Arbor direttamente da filearbor.com per averla. Ogni altra funzionalità è identica tra le due versioni.
Cosa succede se il comando si blocca o fallisce?
I comandi vanno in timeout dopo 30 secondi per impostazione predefinita, così uno script bloccato non può paralizzare le tue regole. Ogni esecuzione viene registrata nel pannello Esecuzioni di comandi con il codice di uscita e l'output completo, quindi un errore alle 3 di notte ti aspetta con tutti i dettagli al momento del controllo.
