Использование Powershell для выполнения скрипта, когда в папку больше не вносятся изменения - PullRequest
1 голос
/ 17 апреля 2020

В настоящее время я пытаюсь, чтобы мой компьютер отслеживал папку и выполнял сценарий для обработки файлов в папке. У меня есть функциональный скрипт, написанный с использованием 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-событий? Любые направления, чтобы решить эту проблему будет принята с благодарностью!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...