Я хочу запустить скрипт, который выполняет определенную программу в окнах, где используется куча файлов (например, куча .pdf). Проблема в том, что я получаю эти файлы из другого места в общую папку. Поэтому мне нужно проверить эту общую папку и выполнить программу только тогда, когда все файлы закончили копирование с другого диска, который я не контролирую.Проверьте, не скопирована ли копия.
В любом случае, чтобы это сделать? Все мои поиски привели меня к использованию powershell и сценария, подобного этому, но вместо моего действия, регистрирующего файл, мне нужно выполнить программу, но я не знаю, как это сделать, поскольку последний скопированный файл/папка уже растет.
### SET FOLDER TO WATCH + FILES TO WATCH + SUBFOLDERS YES/NO
$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = "C:\Users\User\Desktop\monitor_this"
$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), $changeType, $path"
Add-content "C:\Users\User\Desktop\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}
Используйте технику раздвижного таймера: сбросьте таймер внутри $ action code в новое время (например, 5 секунд), чтобы он действительно выполнялся, когда ничего не было изменено в течение 5 секунд. – wOxxOm
, поэтому я добавил $ timer.Interval = 20000 в действии перед добавлением-содержимым. Но как мне получить дополнение или любую другую часть, которая будет выполняться после истечения таймера? – Soorman
add-content должно быть внутри 'таймера' таймера – wOxxOm