0

最近我已将我的 FTP 连接到 Sharefile。Sharfile 在我的 ftp 文件夹中创建一个 .syncdb 文件。我有代码可以检查我的 FTP 文件夹中创建的新文件,将它们复制到新文件夹并发送通知电子邮件文件已到达。有时我现在会收到 .syncdb-wal 和 syncdb-shm 文件的电子邮件。这实际上不会创建要复制的文件,但会创建通知电子邮件并创建一个令人讨厌的空白文件夹。我试图不使用过滤器包含这些文件,但它似乎不起作用。我不确定您是否可以为过滤器声明多个扩展名。下面是我试图用来过滤文件以不包含扩展名为 .syncdb-wal 和 syncdb-shm 的文件的代码,我可能遗漏了一些简单的东西。

$MonitorFolder = Get-Content "C:\Users\RickG\Desktop\ScanFTPDeptClients\Pathlist.txt"

$filter ='*.syncdb-wal, *.syncdb-shm '
foreach ($path in $MonitorFolder){
$watcher = New-Object System.IO.FileSystemWatcher $path, -ne $filter
#Files only. Default is files + directory
$watcher.NotifyFilter = [System.IO.NotifyFilters]'FileName,LastWrite'
}
4

1 回答 1

2

不,您不能应用多个文件名过滤器。

在事件处理程序中检查文件的名称

$watcher = New-Object System.IO.FileSystemWatcher $path
$watcher.NotifyFilter = [System.IO.NotifyFilters]'FileName,LastWrite'
$watcher.Filter = '*.*'

Register-ObjectEvent $watcher -EventName Created -Action {
    if ($EventArgs.Name -eq '.syncdb-wal' -or $EventArgs.Name -eq '.syncdb-shm'){
        # nope, not interested
        return
    }
}
于 2016-07-19T20:18:28.690 回答