【问题标题】:Exclusive File access to logfile with VBScript and FileSystemObject使用 VBScript 和 FileSystemObject 对日志文件的独占文件访问
【发布时间】:2010-09-19 21:59:49
【问题描述】:

我有一个当前写入日志文件的 VBS 脚本。这个脚本可以启动我的多个同时进程,所以现在我担心并发。

我目前正在使用FileSystemObject 打开并写入此文件。 FSO 是否支持独占文件访问?

【问题讨论】:

    标签: vbscript file-permissions file-access filesystemobject


    【解决方案1】:

    是的,FileSystemObject 确实支持独占文件访问。如果在您调用 OpenTextFile 时另一个进程锁定了该文件,您将收到错误消息(权限被拒绝错误)。您应该能够捕获错误并适当地处理它(在调用 OpenTextFile 之后检查 Err.Number 0 是您可以做到的一种方法)。

    【讨论】:

      【解决方案2】:

      我不知道 Windows API 对您来说有多容易访问,但您应该看看 Windows API 中的调试基础结构。

      上面有一篇很好的代码项目文章here 基本上使用 OutputDebugString 并使用 DebugView 捕获它,或将其通过管道传输到文件将消除锁定日志文件的问题,还将消除排队写入日志文件的多个脚本的瓶颈。

      希望这会有所帮助。

      【讨论】:

        【解决方案3】:

        如果可能的话,我建议您在每次需要写入文件时关闭句柄并重新打开它,以避免可能的独占文件访问问题。例如:

        set objFile = objFSO.OpenTextFile("somefile.txt",8,True)
        objFSO.WriteLine "jfdskfdkls"
        objFSO.Close
        'something something
        set objFile = objFSO.OpenTextFile("somefile.txt",8,True)
        objFSO.WriteLine "gfdgfdgfd"
        objFSO.Close
        'something else
        set objFile = objFSO.OpenTextFile("somefile.txt",8,True)
        objFSO.WriteLine "ddsgfgdfsgdfs"
        objFSO.Close
        

        【讨论】:

          猜你喜欢
          • 2014-05-19
          • 2014-08-25
          • 2014-12-05
          • 1970-01-01
          • 2016-07-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-28
          • 1970-01-01
          相关资源
          最近更新 更多