2016-04-09 32 views
3

Bazı görevleri otomatikleştirmek istiyorum. Dosyaları bir klasörden diğerine taşımam gerekiyor. Aşağıdaki senaryoyu iyi çalıştıran yazıyı yazdım.Bir klasöre bir dosya eklendiğinde VBScript'i tetikle

Ancak gereksinim, bir dosya oluşturulduğunda veya bir klasöre eklendiğinde, arka planda, bu VB komut dosyasını otomatik olarak tetiklemektir.

'Script Begins 

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

'Script Ends 
+0

zamanki yaklaşım, Windows'u varsayarak komut dosyası birkaç dakikada çalıştırmak için Görev Zamanlayıcı kullanmaktır. Komut dosyası bir dosyayı algılar, eylemi gerçekleştirir ve gerekirse kayıtlar bir günlüğe kaydedilir (örneğin, gelecekte aynı dosyanın yeniden işlenmesini önlemek için). – Smandoli

cevap

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

Cevaplar için teşekkürler. VBS'de uzman değilim. Yukarıdaki verilen kodumda lütfen uygun değişiklikleri yapabilirsiniz. – vicki

+0

Tekrar teşekkürler. Görev Zamanlayıcısı'nı kullanmak istemiyorum. Yukarıdaki "InstanceCreationEvent" akıllıdır. Ancak bu oluşturma etkinliğini yukarıdaki kodumla nasıl eşleştirebilirim? – vicki

+0

Onlardan birini düzenledim. Bir programcı (ya da wannabe biri) olmanız gerekiyor. –