Sto tentando di monitorare la mia cartella di download e di attivare un'azione della riga di comando al termine del download. Questo è molto simile ad un'altra domanda, Come monitorare una cartella e attivare un'azione della riga di comando quando un file viene creato o modificato?
Ho implementato lo script di PowerShell descritto in risposta più votata , ma quando lo eseguo, trovo che l'output sia confuso.
### SET FOLDER TO WATCH + FILES TO WATCH + SUBFOLDERS YES/NO
$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = "Z:\UnprocessedDownloads"
$watcher.Filter = "*.*"
$watcher.IncludeSubdirectories = $true
$watcher.EnableRaisingEvents = $true
### DEFINE ACTIONS AFTER AN EVENT IS DETECTED
$action = { $path = $Event.SourceEventArgs.FullPath
$changeType = $Event.SourceEventArgs.ChangeType
$logline = "$(Get-Date -f o), $changeType, $path"
Add-content "Z:\log.txt" -value $logline
}
### DECIDE WHICH EVENTS SHOULD BE WATCHED
Register-ObjectEvent $watcher "Created" -Action $action
Register-ObjectEvent $watcher "Changed" -Action $action
Register-ObjectEvent $watcher "Deleted" -Action $action
Register-ObjectEvent $watcher "Renamed" -Action $action
while ($true) {sleep 5}
Devo notare che i download in questione sono stati creati da Chrome, che può o non può spiegare cosa sta succedendo. Come meglio posso dire, la serie di eventi è la seguente:
- Viene creato un file con il nome file desiderato.
- Il file precedentemente creato viene prontamente cancellato.
- Un file con il nome file desiderato e .crdownload aggiunto, viene creato.
- Questo file registra tra due e tre modifiche (dei file che ho provato, se erano pochi KB ne mostrava due, ma i file da 100 MB a 10 GB ne registravano tre).
- Questo file viene rinominato, rimuovendo il file .crdownload .
- Questo file registra quindi altre due o tre modifiche (non sono riuscito a trovare alcuna rima o ragione per quante ne sono state verificate).
- È fatto, nient'altro si registra senza l'intervento manuale.
Quindi, questo è quello. Sono in perdita su come posso dire che un file è veramente "fatto", a corto di forse guardare un evento di rinomina, e successivamente aspettare un numero arbitrario di secondi (a volte, l'ultima modifica registrata impiegava circa 5 secondi a si verificano - ho appena capito che questo è probabilmente dovuto al sonno 5 nella sceneggiatura), forse 10.
Qualcuno può spiegare cosa sta succedendo qui? Ci sono suggerimenti o alternative? Non sono grato a PowerShell, mi è sembrato giusto e il File System Watcher sarebbe stato adatto al compito. Preferirei qualcosa con il minimo sovraccarico possibile, pur mantenendo l'automazione.
FWIW, un estratto dai miei test (difficilmente esauriente, nota: ho aggiustato il registro per mostrare i millisecondi):
2019-01-02T22:03:03.6712039-05:00, Created, Z:\Unprocessed\test (1).jpg
2019-01-02T22:03:03.7242040-05:00, Deleted, Z:\Unprocessed\test (1).jpg
2019-01-02T22:03:03.7252054-05:00, Created, Z:\Unprocessed\test (1).jpg.crdownload
2019-01-02T22:03:03.7252054-05:00, Changed, Z:\Unprocessed\test (1).jpg.crdownload
2019-01-02T22:03:08.7265875-05:00, Changed, Z:\Unprocessed\test (1).jpg.crdownload
2019-01-02T22:03:08.7305994-05:00, Renamed, Z:\Unprocessed\test (1).jpg
2019-01-02T22:03:08.7315887-05:00, Changed, Z:\Unprocessed\test (1).jpg
2019-01-02T22:03:08.7315887-05:00, Changed, Z:\Unprocessed\test (1).jpg
2019-01-02T22:03:13.7348367-05:00, Changed, Z:\Unprocessed\test (1).jpg
2019-01-02T22:09:28.7729475-05:00, Deleted, Z:\Unprocessed\10GB.bin
2019-01-02T22:09:33.7742846-05:00, Created, Z:\Unprocessed\1GB.bin
2019-01-02T22:09:33.7762852-05:00, Deleted, Z:\Unprocessed\1GB.bin
2019-01-02T22:09:33.7772866-05:00, Created, Z:\Unprocessed\1GB.bin.crdownload
2019-01-02T22:09:33.7782853-05:00, Changed, Z:\Unprocessed\1GB.bin.crdownload
2019-01-02T22:09:33.7792825-05:00, Changed, Z:\Unprocessed\1GB.bin.crdownload
2019-01-02T22:10:28.7850646-05:00, Changed, Z:\Unprocessed\1GB.bin.crdownload
2019-01-02T22:10:28.7860648-05:00, Renamed, Z:\Unprocessed\1GB.bin
2019-01-02T22:10:28.7870652-05:00, Changed, Z:\Unprocessed\1GB.bin
2019-01-02T22:10:28.7870652-05:00, Changed, Z:\Unprocessed\1GB.bin
2019-01-02T22:10:28.7880654-05:00, Changed, Z:\Unprocessed\1GB.bin
2019-01-02T22:11:13.7928495-05:00, Created, Z:\Unprocessed\test (2).jpg
2019-01-02T22:11:13.7938482-05:00, Deleted, Z:\Unprocessed\test (2).jpg
2019-01-02T22:11:13.7938482-05:00, Created, Z:\Unprocessed\test (2).jpg.crdownload
2019-01-02T22:11:13.7948490-05:00, Changed, Z:\Unprocessed\test (2).jpg.crdownload
2019-01-02T22:11:18.7972830-05:00, Changed, Z:\Unprocessed\test (2).jpg.crdownload
2019-01-02T22:11:18.7982945-05:00, Renamed, Z:\Unprocessed\test (2).jpg
2019-01-02T22:11:18.7992839-05:00, Changed, Z:\Unprocessed\test (2).jpg
2019-01-02T22:11:18.8002947-05:00, Changed, Z:\Unprocessed\test (2).jpg
2019-01-02T22:11:23.8011169-05:00, Changed, Z:\Unprocessed\test (2).jpg