В настоящее время я пытаюсь, чтобы мой компьютер отслеживал папку и выполнял сценарий для обработки файлов в папке. У меня есть функциональный скрипт, написанный с использованием python. Я хочу выполнить сценарий только в том случае, если в папку больше не вносятся изменения.
Монитор> дождаться, пока не будет внесено больше изменений> выполнить сценарий
Это мой текущий сценарий powershell:
### SET FOLDER TO WATCH + FILES TO WATCH + SUBFOLDERS YES/NO
$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = "D:\folder_to_monitor"
$watcher.Filter = "*.tif"
$watcher.IncludeSubdirectories = $true
$watcher.EnableRaisingEvents = $true
### DEFINE ACTIONS AFTER AN EVENT IS DETECTED
$action = { $path = $Event.SourceEventArgs.FullPath
$parentdir = Split-Path $path
$exptdir = Split-Path $parentdir
$changeType = $Event.SourceEventArgs.ChangeType
$logline = "$(Get-Date), $changeType, $path"
Add-content "D:\log\log.txt" -value $logline
$scriptpath = "D:\script\import.py"
$intpath = Join-Path $exptdir -ChildPath "\import.py"
if (-not (Test-Path $intpath))
{Copy-Item $scriptpath -Destination $exptdir
}
}
### DECIDE WHICH EVENTS SHOULD BE WATCHED
Register-ObjectEvent $watcher "Created" -Action $action
while ($true) {sleep 5}
Я копирую и выполняю сценарий в каждую родительскую папку, так как я еще не выяснил, как передать каталог событий в мой python сценарий.
Я не мог понять, как обеспечить выполнение сценария только тогда, когда больше не было внесено никаких изменений. Я думаю, что, возможно, я мог бы назвать список get-событий? Любые направления, чтобы решить эту проблему будет принята с благодарностью!