Я пытаюсь создать программу 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
через запятую?