使用VBScript和FileSystemObject对日志文件进行独占文件访问

时间:2008-10-29 23:55:23

标签: vbscript file-permissions file-access filesystemobject

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

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

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

我不知道Windows API对您的访问权限,但您应该查看Windows API中的调试基础结构。

关于它的一篇很好的Code Project文章here 基本上使用OutputDebugString并使用DebugView捕获它,或将它传递给文件将删除锁定日志文件的问题,也将删除排队写入日志文件的多个脚本的瓶颈。

希望这有帮助。

答案 2 :(得分: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