如何使用Powershell中的FileSystemWatcher只监视文件夹的某些子文件夹?
我创建了一个新的FileSystemWatcher,如下所示:
$folder = 'path\to\root\monitoring\folder'
$filter = '*.xml'
$fsw = New-Object IO.FileSystemWatcher
$fsw.Path = $folder
$fsw.Filter = $filter
$fsw.IncludeSubdirectories = $true
$fsw.EnableRaisingEvents = $true
在该根监视文件夹中有一个树状结构:
任务01
- 工作
- 认可
- 核准
任务02
- 工作
- 认可
- 核准
任务03
- 工作
- 认可
- 核准
我只想检查“已批准”文件夹中的更改。
最简单的解决办法是
$folder = 'path\to\root\monitoring\folder\*\approved'
但似乎不太管用。
3条答案
按热度按时间mbyulnm01#
您必须在要监视的每个目录上设置一个监视器,因为路径不支持通配符(请参阅此链接上的Exceptions部分:FileSystemWatcher.Path)尝试使用Filter属性来支持可能的通配符路径也不会起作用。
ahy6op9u2#
一个可能的解决方法是评估事件处理程序中的“Path”值(Created,Changed,etc),看看它是否符合您要监视和处理的文件夹的模式。如果符合,则继续在事件处理程序中运行代码,如果不符合,则直接从处理程序中返回。
5sxhfpxr3#
接下来的代码可能会做您需要的事情,并进行适当的修改: