2011-04-23 163 views
5

我目前正在開發一個腳本來創建自定義備份腳本,我唯一缺少的部分是文件監視器。我需要某種形式的腳本來監視文件夾中的文件更改,然後使用更改的文件運行命令。Windows:文件監控腳本(批量/ VBS)

因此,舉例來說,如果該文件的變化,它會執行「C:/syncbatch.bat%Location_Of_File%」

我應該怎樣開始是極大的讚賞任何幫助。非常感謝!

+1

你可以在這裏看到:http://ghostdog74.livejournal.com/37031.html在其他下。不會完全解決你的問題,但你有一些想法。 – ghostdog74 2011-04-23 04:03:00

回答

0

調用WMI是相當隱蔽的,它會導致WMI服務開始運行的可由於它相當大而導致膨脹,並且您無法在不重新啓動的情況下取消您請求的文件更改通知。有些人在Dropbox文件夾中嘗試遠程打印,發現一個簡單的VBScript程序在循環中運行了10秒鐘的WScript.Sleep循環,使用的資源非常少。當然,要停止它,你必須任務殺死該腳本或程序到它的某個退出觸發器,它可以找到像watch文件夾中特別命名的空文件,但是這比WMI更容易。

文件夾間諜http://venussoftcorporation.blogspot.com/2010/05/thefolderspy.html 是一個免費的輕量級DOT.NET基於文件/文件夾看GUI I'ved之前用於運行基於文件的更改腳本的應用程序。看起來新版本可以將事件文件名傳遞給啓動的命令。舊版本我還沒有支持文件事件信息,所以啓動時,我的腳本必須實例化一個文件系統對象,並掃描觀察到的文件夾以根據諸如日期戳和大小之類的標準來定位新文件。

如果您在可選腳本調用條目中聲明瞭myscript.vbs「* f」,則此新版本似乎允許您將文件名傳遞給腳本。在傳遞文件夾名稱中有空格的文件路徑時,引號可能很重要。只要記住,如果您正在觀看更改事件,隨着文件的增長或編輯,您將收到很多更改事件,通常您只需要通知文件添加或刪除。

腳本可以做的另一個訣竅是將文件大小放在變量中,休眠幾秒鐘,然後再次檢查文件以查看它是否已更改。如果它在幾秒鐘內沒有改變,你通常可以假設創建完成後將其寫入磁盤。如果它不斷變化,直到穩定。

+0

除非故意禁用,否則WMI將自XP以來使用的每個Windows系統上運行。所以不知道這是如何比第三方.Net應用程序更臃腫? – GravityWell 2013-09-12 14:16:59

+0

@GraviWell它是可移植的,很小,可以終止提示,至少對我來說文件夾間諜是一個更好的解決方案,這個問題。另外還有一點很棒,它有一個SDK,這對於我想要的另一件事情會很有用,所以雙拇指向AP – vvolkgang 2014-05-29 10:46:32