使用VBScript和FileSystemObject实现对日志文件的独占访问

4

我有一个VBS脚本,目前它会写入日志文件。由于该脚本可以被多个同时运行的进程启动,因此我现在担心并发性问题。

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

3个回答

4

是的,FileSystemObject支持独占文件访问。如果在调用OpenTextFile时另一个进程锁定了文件,则会出现错误(权限被拒绝错误)。您应该能够捕获错误并适当处理它(检查在调用OpenTextFile后Err.Number <> 0是一种方法)。


0
如果有可能的话,我建议每次需要写入文件时都关闭句柄并重新打开,以避免可能出现的独占文件访问问题。例如:
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

0

我不知道Windows API对你来说有多可访问,但是你应该看一下Windows API中的调试基础设施。

这里有一篇很好的Code Project文章here 基本上使用OutputDebugString并通过DebugView捕获它,或者将其导出到文件中,将删除你在锁定日志文件方面的问题,并且还可以消除多个脚本排队写入日志文件的瓶颈。

希望这能帮到你。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接