Windows:文件监控脚本(批处理/ VBS)

时间:2011-04-23 03:58:36

标签: windows vbscript batch-file

我目前正在编写一个脚本来创建自定义备份脚本,我唯一缺少的是文件监视器。我需要某种形式的脚本来监视文件夹中的文件更改,然后运行一个包含已更改文件的命令。

因此,例如,如果文件发生变化,它将执行“c:/syncbatch.bat%Location_Of_File%”

非常感谢任何有关我应该开始的地方的帮助。非常感谢!

2 个答案:

答案 0 :(得分:5)

在VBScript中,您可以通过订阅WMI __InstanceModificationEvent事件来监视文件夹中的文件更改。这些文章包含您可以从中学习并适应您特定需求的示例代码:

答案 1 :(得分:0)

调用WMI是相当神秘的,它导致WMI服务开始运行,这可能导致膨胀,因为它相当大,你真的无法取消你从它请求的文件更改通知而不重新启动。有些人尝试从Dropbox文件夹进行远程打印,发现一个简单的VBScript程序在循环中使用10秒WScript.Sleep调用运行无限循环,使用的资源要少得多。当然要停止它你必须任务杀死该脚本或程序到它的一些退出触发器,它可以像在监视文件夹中找到一个特别命名的空文件,但这比弄乱WMI更容易。

文件夹间谍http://venussoftcorporation.blogspot.com/2010/05/thefolderspy.html 是一个免费的轻量级DOT.NET文件/文件夹观看GUI应用程序我以前用于根据文件更改运行脚本。看起来新版本可以将事件文件名传递给已启动的命令。我以前的旧版本还没有支持文件事件信息所以在启动时,我的脚本必须实例化一个文件系统对象并扫描监视文件夹,根据日期戳和大小等标准找到新文件。

如果您在可选脚本调用条目上说myscript.vbs“* f”,则此较新版本似乎允许您将文件名传递给脚本。传递文件夹名称中包含空格的文件路径时,引号可能很重要。请记住,如果您正在观看更改事件,随着文件的增长或编辑,您将获得很多更改,通常您只需要添加或删除文件的通知。

您的脚本可以做的另一个技巧是将文件大小放在变量中,休眠几秒钟,然后再次检查文件以查看它是否已更改。如果它在几秒钟内没有改变,你通常可以假设创建完成后将其写入磁盘。如果它不断改变循环直到它稳定。