我正在尝试在Windows PowerShell中构建FileWatcher程序。我有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个位置?我可以在$watcher.Path
中用逗号分隔的4条路径吗?