我目前正在编写一个脚本来创建自定义备份脚本,我唯一缺少的是文件监视器。我需要某种形式的脚本来监视文件夹中的文件更改,然后运行一个包含已更改文件的命令。
因此,例如,如果文件发生变化,它将执行“c:/syncbatch.bat%Location_Of_File%”
非常感谢任何有关我应该开始的地方的帮助。非常感谢!
答案 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”,则此较新版本似乎允许您将文件名传递给脚本。传递文件夹名称中包含空格的文件路径时,引号可能很重要。请记住,如果您正在观看更改事件,随着文件的增长或编辑,您将获得很多更改,通常您只需要添加或删除文件的通知。
您的脚本可以做的另一个技巧是将文件大小放在变量中,休眠几秒钟,然后再次检查文件以查看它是否已更改。如果它在几秒钟内没有改变,你通常可以假设创建完成后将其写入磁盘。如果它不断改变循环直到它稳定。