我创建了一个使用FileSystemWatcher的脚本并创建了一个作业。将文件添加到文件夹后
完成后,便结束了工作。
我想做的是使用Windows Task Scheduler来检查作业完成后是否可以立即再次运行。这样,如果一个人放一个文件夹,另一个人也可以这样做。
另外,如果还有另一种方式可以进行这项工作,我很乐意使用它。
我尝试安排任务运行,但最小增量为1分钟
我希望filesystemwatcher一直运行。脚本完成后,我希望它再次开始。
答案 0 :(得分:0)
事件(文件创建)发生时不必开始工作,您可以直接移动文件并使用action
参数执行任何操作。
此外,您不必重启事件,除非您手动注销它,否则事件将一直运行,因此您完全不必使用任务计划程序。
这是代码
# set the folder you want to watch
$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = "$home/Desktop/Folder"
$watcher.Filter = "*.*"
$watcher.IncludeSubdirectories = $true
$watcher.EnableRaisingEvents = $true
# start job when event is detected
$action = {
Start-Job -ScriptBlock {
# Step 1&2 (You can move the file and rename it with one step)
Move-Item $Event.SourceEventArgs.FullPath -Destination $newPath
} | Wait-Job
}
# Register and start the FileSystemWatcher
Register-ObjectEvent -InputObject $watcher -EventName Created -SourceIdentifier FileCreated -Action $action
注意
我在代码中使用了Start-Job
;但是,您可以忽略它,并将代码准确地放在$action
中。
此代码将注册新的FileSystemWatcher,并将继续监视文件夹中是否有新创建的文件,然后将其移动到新位置。
停止监视程序
Unregister-Event -SourceIdentifier FileCreated
请在此处查看有关tracking changes to a folder using PowerShell的更多信息