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

我目前正在创build一个脚本来创build一个自定义备份脚本,我唯一缺less的就是一个文件监视器。 我需要某种forms的脚本来监视一个文件夹的文件更改,然后运行一个命令,并更改文件。

所以,例如,如果文件改变,它会执行“c:/syncbatch.bat%Location_Of_File%”

任何帮助,我应该开始非常感激。 非常感谢!

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

  • WMI和文件系统监视
  • 如何用一个脚本监控不同类型的事件?

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

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

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

你的脚本可以做的另一个技巧是将文件大小放在一个变量中,休眠几秒钟,然后再次检查文件,看看它是否发生了变化。 如果它在几秒钟内没有改变,通常可以假设将它写入磁盘所做的任何事情。 如果它不断变化,直到稳定。