【问题标题】:Trigger a VBScript when a file is added to a folder [duplicate]将文件添加到文件夹时触发 VBScript [重复]
【发布时间】:2016-04-11 20:39:06
【问题描述】:

我希望自动化一些任务。我需要将文件从一个文件夹移动到另一个文件夹。我已经编写了下面的脚本,它工作正常。

但我的要求是在创建文件或将文件添加到文件夹时在后台自动触发此 VB 脚本。

'Script Begins

With CreateObject("Scripting.FileSystemObject")
    .MoveFile "C:\Source\Files\*.*", "D:\Destination\Files\"
End With

'Script Ends

【问题讨论】:

  • 通常的方法(假设是 Windows)是使用任务计划程序每隔几分钟运行一次脚本。该脚本检测文件,执行操作,并在必要时记录到日志中(例如,避免将来再次处理相同的文件)。

标签: file vbscript directory


【解决方案1】:

InstanceCreationEvent

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:\\\\scripts""'")
Do
    Set objLatestEvent = colMonitoredEvents.NextEvent
    With CreateObject("Scripting.FileSystemObject")
        .MoveFile "C:\Source\Files\*.*", "D:\Destination\Files\"
    End With
Loop

InstanceModificationEvent

Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colMonitoredEvents = objWMIService.ExecNotificationQuery _
("SELECT * FROM __InstanceModificationEvent WITHIN 10 WHERE Targetinstance ISA 'CIM_DirectoryContainsFile' and TargetInstance.GroupComponent= 'Win32_Directory.Name=""c:\\\\scripts""'")
Do
    Set objLatestEvent = colMonitoredEvents.NextEvent
    Wscript.Echo objLatestEvent.TargetInstance.PartComponent
Loop

InstanceDeletionEvent

Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colMonitoredEvents = objWMIService.ExecNotificationQuery _
("SELECT * FROM __InstanceDeletionEvent WITHIN 10 WHERE Targetinstance ISA 'CIM_DirectoryContainsFile' and TargetInstance.GroupComponent= 'Win32_Directory.Name=""c:\\\\scripts""'")
Do
    Set objLatestEvent = colMonitoredEvents.NextEvent
    Wscript.Echo objLatestEvent.TargetInstance.PartComponent
Loop

【讨论】:

  • 感谢您的回复。我不是 VBS 的专家。请您对我上面给定的代码进行适当的更改。
  • 再次感谢。我不想使用任务计划程序。上面的“InstanceCreationEvent”很聪明。但是如何将这个创建事件与我上面的代码结合起来呢?
  • 我编辑了其中一个。您需要成为一名程序员(或想成为一名程序员)。
  • 我是一个很慢的程序员。请原谅我。我一直在绞尽脑汁,但没有得到答案。请你能帮助和交配这两个。非常感谢您的帮助。
  • 我编辑了第一个示例代码。
猜你喜欢
  • 2013-09-03
  • 2015-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多