在我的代码段中,当我编写文件名脚本时,它在以下行给我一个权限被拒绝:
Set objTextFile = objFSO.OpenTextFile(strDirectory & strFile, ForAppending, True)
这是脚本
'output log info Function OutputToLog (strToAdd) Dim strDirectory,strFile,strText, objFile,objFolder,objTextFile,objFSO strDirectory = "c:\eNet" strFile = "\weeklydel.bat" 'strText = "Book Another Holiday" strText = strToAdd ' Create the File System Object Set objFSO = CreateObject("Scripting.FileSystemObject") ' Check that the strDirectory folder exists If objFSO.FolderExists(strDirectory) Then Set objFolder = objFSO.GetFolder(strDirectory) Else Set objFolder = objFSO.CreateFolder(strDirectory) 'WScript.Echo "Just created " & strDirectory End If If objFSO.FileExists(strDirectory & strFile) Then Set objFolder = objFSO.GetFolder(strDirectory) Else Set objFile = objFSO.CreateTextFile(strDirectory & strFile) 'Wscript.Echo "Just created " & strDirectory & strFile End If set objFile = nothing set objFolder = nothing ' OpenTextFile Method needs a Const value ' ForAppending = 8 ForReading = 1, ForWriting = 2 Const ForAppending = 2 Set objTextFile = objFSO.OpenTextFile(strDirectory & strFile, ForAppending, True) ' Writes strText every time you run this VBScript objTextFile.WriteLine(strText) objTextFile.Close End Function
我已经分配了vbscript域管理员权限.有任何想法吗?
提前致谢
我不认为这与文件权限本身有关.它与您使用以下方式创建文件的事实有关:
Set objFile = objFSO.CreateTextFile(strDirectory & strFile)
这会创建文件...并带有对该文件的引用(objFile)
然后在销毁引用之前不要关闭文件
... 'Missing objFile.Close here Set objFile = nothing Set objFolder = nothing ...
因此,您正在销毁引用但将文本流保留在内存中,从而锁定您的文件.
然后,当文件已经"打开"时,您正在尝试重新打开该文件.这是一个有点长的啰嗦,你已经在创建文件后得到了一个引用 - 直接写入它会更容易,而不是在创建另一个之前销毁引用.