Set FSO = CreateObject("Scripting.FileSystemObject")
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colMonitoredEvents = objWMIService.ExecNotificationQuery _
("SELECT * FROM __InstanceCreationEvent WITHIN 10 WHERE Targetinstance ISA 'CIM_DirectoryContainsFile' and TargetInstance.GroupComponent= 'Win32_Directory.Name=""c:\\\\Win16""'")
Do
Set objLatestEvent = colMonitoredEvents.NextEvent
FSO.MoveFile Replace(Replace(Split(objLatestEvent.TargetInstance.PartComponent, "=")(1), "\\", "\"), """", ""), "C:\Users\User\Desktop\Backup\"
Loop
.NET 框架具有System.IO.FileSystemWatcher,可以从 PowerShell 访问(示例)。
这将打印出新创建的文件
c:\win16
。请注意文件夹路径中的双倍反斜杠。Within 10
说每10秒检查一次。这会将新文件复制
C:\Win16
到C:\Users\User\Desktop\Backup\
. 注意尾随反斜杠。您需要编辑路径。所有
Replace
s 和Split
s 都将其作为一个普通文件路径,将两个反斜杠变为一个,删除引号,并split
丢弃返回字符串的第一部分。调用它
monitorfolder.vbs
。将其打印到控制台窗口
Shift+右键单击文件 -复制为路径。以管理员身份打开命令提示符并 右键单击 - 粘贴,然后按Home键并
cscript //nologo
添加到 vbs 的路径之前。然后按Ctrl+C停止监控。输出将如下所示
笔记
当文件被修改或创建时,Windows 会设置它的存档位。
XCopy
只能复制设置了存档位的文件,然后清除该位。这就是早期 MS-Dos 备份程序的工作原理。它只复制自上次备份以来修改过的新文件。见attrib /?
和xcopy /?
。可能的解决方案,每隔 10 分钟运行一次 powershell 脚本,查找创建/修改的文件并移动