File Watcher с помощью Windows Power Shell - PullRequest
0 голосов
/ 19 ноября 2018

Я пытаюсь создать программу FileWatcher в Windows PowerShell. У меня есть 4 места, которые мне нужно контролировать. В этих 4 местах у меня уже есть сотни файлов.

У меня есть определенный формат для файла, который я получаю; например имя файла начинается со вчерашней даты, т. е. если сегодняшняя дата 2018-11-19, то файл, который мне нужно отслеживать, начинается с 20181118[5 digits]_ABC_XYZ.csv (я думаю, что здесь нужно было бы использовать регулярные выражения).

После получения файла мне нужно проверить, находится ли файл в этом конкретном формате, и если это так, мне нужно скопировать файл в указанном месте. Файл может прийти в любое время.

Ниже приведен код программы, который я мог тестировать до сих пор:

$Date = (Get-Date).AddDays(-1)

$DateStr = $Date.ToString("yyyyMMdd")

### SET FOLDER TO WATCH + FILES TO WATCH + SUBFOLDERS YES/NO
    $watcher = New-Object System.IO.FileSystemWatcher
    $watcher.Path = "C:\source"
    $watcher.Filter = "*.*"
    $watcher.IncludeSubdirectories = $true
    $watcher.EnableRaisingEvents = $true  

### DEFINE ACTIONS AFTER AN EVENT IS DETECTED
    $action = { $path = $Event.SourceEventArgs.FullPath
                $changeType = $Event.SourceEventArgs.ChangeType
                $Name = $Event.SourceEventArgs.Name
                $Extension = $Event.SourceEventArgs.Name.extension
                $logline = "$(Get-Date), $changeType, $path, $Name, $Extension"
                Add-content "D:\log.txt" -value $logline                
              }    


### DECIDE WHICH EVENTS SHOULD BE WATCHED 
    Register-ObjectEvent $watcher "Created" -Action $action
    Register-ObjectEvent $watcher "Changed" -Action $action
    while ($true) {sleep 5}

Я понимаю, что мне нужно написать код в блоке $ action, чтобы проверить формат файла, который я получаю, и если файл в правильном формате, то мне нужно скопировать файл в другое место.

Пожалуйста, помогите мне проверить формат файла в блоке $action и продолжить копирование файла. Также, как я могу контролировать 4 местоположения? Я даю 4 пути в $watcher.Path через запятую?

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