メソッドを使用すると、vbscriptはForWritingをブロックせず、ファイルが閉じられるまで待機します。次のスクリプトを2回起動します...最初にmsgbox"FileOpen ..."を開いたままにします...次に、もう一度起動します。「PermissionDenied」が表示され、2番目のスクリプトが壊れます。エラー時にレジュームネクストは、続行する前にファイルが使用可能になるのを待つという目的を無効にします。
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Set filesys = CreateObject("Scripting.FileSystemObject")
Set filetxt = filesys.OpenTextFile("c:\somefile.txt", ForWriting, True)
wscript.echo "File Open..."
filetxt.Close
wscript.echo "Done..."
だから私は4つの賛成票があるのを見ます...これはおそらくどのように機能しましたか?
これが作業ルーチンです-ファイルが利用可能になるまでwhileループに座ってください:
lockFile
sub lockFile ()
Dim fso, LockFile, LockFileName, done
Const ForWriting = 2
LockFileName = "C:\somefile.lck"
Set filesys = CreateObject("Scripting.FileSystemObject")
done = false
on error resume next 'need to evaluate error
while (not(done))
err.clear
Set filetxt = filesys.OpenTextFile(LockFileName, ForWriting, True)
if (err.number = 0) then
done = true
else
done = false
end if
wscript.echo "Error [0=file open, 70=file in use] : " & err.number
wscript.sleep(1000) 'wait one second instead of chewing up CPU
wend
wscript.echo "File Open..."
filetxt.Close
wscript.echo "Done..."
on error goto 0 'reset error level
end sub