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

Windows:文件监视脚本(批处理/VBS),windows,vbscript,batch-file,Windows,Vbscript,Batch File,我目前正在编写一个脚本来创建自定义备份脚本,唯一缺少的是一个文件监视器。我需要某种形式的脚本来监视文件夹中的文件更改,然后对更改的文件运行命令 因此,例如,如果文件发生更改,它将在VBScript中执行“c:/syncbatch.bat%Location\u Of_file%”,您可以通过订阅WMI事件来监视文件夹中的文件更改。这些文章包含示例代码,您可以从中学习并适应您的特定需要: 调用WMI是相当神秘的,它会导致WMI服务开始运行,这可能会导致膨胀,因为它相当大,如果不重新启动,您确实

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


因此,例如,如果文件发生更改,它将在VBScript中执行“c:/syncbatch.bat%Location\u Of_file%”

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


调用WMI是相当神秘的,它会导致WMI服务开始运行,这可能会导致膨胀,因为它相当大,如果不重新启动,您确实无法取消从它请求的文件更改通知。一些人在试验从Dropbox文件夹远程打印时发现,一个简单的VBScript程序在循环中使用10秒的WScript.Sleep调用运行一个无休止的循环,使用的资源要少得多。当然,要停止它,您必须将该脚本或程序任务杀死到它的某个退出触发器中,它可以在watch文件夹中找到一个特定命名的空文件,但这仍然比搞乱WMI容易

文件夹间谍 是一个免费的轻量级基于.NET的文件/文件夹监视GUI应用程序,我以前使用过它来运行基于文件更改的脚本。看起来新版本可以将事件文件名传递给启动的命令。我的旧版本还不支持文件事件信息,所以在启动时,我的脚本必须实例化一个文件系统对象,并扫描关注的文件夹,以根据诸如日期戳和大小之类的标准找到新文件

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


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

除非故意禁用,否则WMI将在我自XP以来使用的所有Windows系统上运行。所以,我不确定这比第三方的.Net应用程序更臃肿吗?@GraviWell它便携、小巧,可以根据提示终止,至少对我来说,文件夹间谍是解决这个问题的更好的方法。另一方面,它有一个SDK真是太棒了,这对我想到的另一件事很有用,所以,向AP竖起大拇指