phi*_*ill 4 vbscript file-permissions
在我的代码段中,当我编写文件名脚本时,它在以下行给我一个权限被拒绝:
Set objTextFile = objFSO.OpenTextFile(strDirectory & strFile, ForAppending, True)
Run Code Online (Sandbox Code Playgroud)
这是脚本
'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
Run Code Online (Sandbox Code Playgroud)
我已经分配了vbscript域管理员权限.有任何想法吗?
提前致谢
Ben*_*ter 11
我不认为这与文件权限本身有关.它与您使用以下方式创建文件的事实有关:
Set objFile = objFSO.CreateTextFile(strDirectory & strFile)
Run Code Online (Sandbox Code Playgroud)
这会创建文件...并带有对该文件的引用(objFile)
然后在销毁引用之前不要关闭文件
...
'Missing objFile.Close here
Set objFile = nothing
Set objFolder = nothing
...
Run Code Online (Sandbox Code Playgroud)
因此,您正在销毁引用但将文本流保留在内存中,从而锁定您的文件.
然后,当文件已经"打开"时,您正在尝试重新打开该文件.这是一个有点长的啰嗦,你已经在创建文件后得到了一个引用 - 直接写入它会更容易,而不是在创建另一个之前销毁引用.