使用Windows Power Shell的File Watcher

时间:2018-11-19 15:58:43

标签: windows powershell file-watcher

我正在尝试在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条路径吗?

0 个答案:

没有答案