您的标签表明您使用的是Windows8。这很好,因为您拥有强大的工具PowerShell和一个名为的方便的小cmdlet Register-ObjectEvent
。
创建一个文本文件,将扩展名更改为.ps1
,将下面的脚本粘贴到该文件中。将$watchedFolder
变量更改为要观看的文件夹。更改“做某事”功能以包括robocopy命令或其他内容。只要脚本正在运行,就运行脚本,只要在监视文件夹中更改了文件或文件夹,该功能就会运行(几乎立即!)。
您可以在Windows启动时运行此脚本,并且无需使用计时器就可以始终在后台运行该脚本。
$block = {
function Do-Something
{
param ($message, $event)
# function to call when event is raised
# do a robocopy or whatever
Start-Process cmd.exe "/C echo $("{0} {1}" -f $event.SourceEventArgs.FullPath, $message)&pause"
}
$watchedFolder = "C:\Users\Admin-PC\Desktop"
$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = $watchedFolder
Register-ObjectEvent -InputObject $watcher -EventName Created -SourceIdentifier File.Created -Action { Do-Something "Created" $event }
Register-ObjectEvent -InputObject $watcher -EventName Deleted -SourceIdentifier File.Deleted -Action { Do-Something "Deleted" $event }
Register-ObjectEvent -InputObject $watcher -EventName Changed -SourceIdentifier File.Changed -Action { Do-Something "Changed" $event }
Register-ObjectEvent -InputObject $watcher -EventName Renamed -SourceIdentifier File.Renamed -Action { Do-Something "Renamed" $event }
}
$encodedBlock = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($block))
Start-Process PowerShell.exe -verb Runas -argumentlist '-WindowStyle Hidden', '-NoExit', '-EncodedCommand', $encodedBlock
实际观看
运行保存的脚本。
您将看到控制台窗口闪烁,在它们关闭后,唯一的指示是正在运行的将是几个新进程。
在桌面上做一些测试。
- 当您不再希望其运行时,请结束创建的PowerShell进程。
一些背景信息 -如果您不熟悉此答案中使用的工具。