首页 > 解决方案 > Powershell IO.FileSystemWatcher 过滤器

问题描述

我创建了一个IO.filesystemwatcher来监视文件夹并在将某些文件类型写入该位置时采取行动。我正在寻找文件类型.jpg.tmp. 我已将过滤器命名为变量,过滤器在包含一种文件类型而不是两种类型时有效。

下面的代码正常运行:

$filter = '*.jpg'
New-Object IO.FileSystemWatcher $Folder, $filter -Property @{IncludeSubdirectories = $true;NotifyFilter = [IO.NotifyFilters]'FileName, LastWrite'}

下面的代码正常运行:

$filter = '*.tmp'
New-Object IO.FileSystemWatcher $Folder, $filter -Property @{IncludeSubdirectories = $true;NotifyFilter = [IO.NotifyFilters]'FileName, LastWrite'}

下面的代码不起作用:

$filter = '*.tmp','*jpg'
New-Object IO.FileSystemWatcher $Folder, $filter -Property @{IncludeSubdirectories = $true;NotifyFilter = [IO.NotifyFilters]'FileName, LastWrite'}

我也试过$filter = '*.tmp' -or '*jpg'

我确信有一种不同的方法可以让它发挥作用,但我不太擅长使用IO.filesystemwatcher. 任何建议表示赞赏。

谢谢

标签: powershellfilesystemwatcher

解决方案


.Filter属性[string]-typed 并且仅支持单个通配符表达式;来自文档:

"*.txt|*.doc"不支持使用多个过滤器,例如。

听起来你必须:

  • 要么:通过设置为(空字符串)来监视所有文件的更改,然后在事件处理程序中执行您自己的过滤。.Filter''

  • 或者:为每个过滤器设置一个单独的观察者实例(通配符模式)。谢谢,mhhollomon


推荐阅读