我使用powershell脚本来查看文件夹,并在创建新文件时收到通知。
脚本如下
### SET FOLDER TO WATCH + FILES TO WATCH + SUBFOLDERS YES/NO
$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = "C:\Users\Desktop\test\"
$watcher.Filter = "*.nrrd"
$watcher.IncludeSubdirectories = $true
$watcher.EnableRaisingEvents = $true
### DEFINE ACTIONS AFTER AN EVENT IS DETECTED
$action =
{
$path = $Event.SourceEventArgs.FullPath
$changeType = $Event.SourceEventArgs.ChangeType
Write-Host "The file '$path' was $changeType at '$(Get-Date)'" -fore green
}
### DECIDE WHICH EVENTS SHOULD BE WATCHED
Register-ObjectEvent $watcher "Created" -Action $action
while ($true) {sleep 5}
即使我手动或使用.bat
,PHP
甚至python
创建文件,它也能正常工作。
它不起作用的唯一方法是当另一个用户(或会话?)正在创建文件时。
我在计算机上创建了一个文件夹,通过LAN与其他计算机共享。 当我(或我的一个脚本)创建文件时,脚本工作正常,并显示句子。
如果我在局域网上使用另一台计算机在同一文件夹中添加文件,则无效。没有显示任何内容。
(但是如果我复制/浏览其他用户创建的文件,则脚本正在运行,因此文件本身不存在问题)。
您有解决方法或想法吗?
手动(或复制/粘贴)创建的文件拥有所有者DEBIAN\root
,但原始文件具有Unix User\www-data
。
也许powershell(windows)无法“捕获”这种用户,这可能是甚至没有创建事件的原因?
答案 0 :(得分:0)
尝试提供共享文件夹的UNC路径
$watcher.Path = "\\server\share"