2016-04-09 29 views
3

いくつかのタスクを自動化したい。あるフォルダから別のフォルダにファイルを移動する必要があります。私はうまく動作している下のスクリプトを書いている。ファイルがフォルダに追加されたときにVBScriptをトリガーする

しかし私の必要条件は、ファイルが作成されたりフォルダに追加されたときに、このVBスクリプトをバックグラウンドで自動的にトリガすることです。

'Script Begins 

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

'Script Ends 
+0

通常のアプローチは、Windowsのを想定して、スクリプトを数分ごとに実行するタスクスケジューラを使用することです。スクリプトは、ファイルを検出し、アクションを実行し、必要に応じてログに記録します(たとえば、同じファイルを再度処理しないようにするなど)。 – Smandoli

答えて

0

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 
+0

返信いただきありがとうございます。私はVBSの専門家ではない。上記のコードを適切に変更してください。 – vicki

+0

もう一度ありがとう。私はタスクスケジューラを使用したくない。上記の "InstanceCreationEvent"はスマートです。しかし、私のコードでこの作成イベントをどのように仲間にするのですか? – vicki

+0

私はそれらの1つを編集しました。あなたはプログラマー(または熱心な人)である必要があります。 –

関連する問題