File io VBScript无法删除文件夹
我有一个VBScript程序,可以在用户的临时文件夹中创建一个文件夹:File io VBScript无法删除文件夹,file-io,vbscript,File Io,Vbscript,我有一个VBScript程序,可以在用户的临时文件夹中创建一个文件夹: set fso = CreateObject("scripting.FileSystemObject") temp = fso.GetSpecialFolder(2) dropzone = temp & "\{d450c76c-2ad8-4f73-af8a-ccc5ba28036a}\" If Not fso.FolderExists(dropzone) Then set NewFolder = fso.
set fso = CreateObject("scripting.FileSystemObject")
temp = fso.GetSpecialFolder(2)
dropzone = temp & "\{d450c76c-2ad8-4f73-af8a-ccc5ba28036a}\"
If Not fso.FolderExists(dropzone) Then
set NewFolder = fso.CreateFolder(dropzone)
End If
set NewFolder = Nothing
在程序结束时,我想删除该文件夹。我尝试了此操作,但它给了我一个权限被拒绝的错误:
set deletefolder = fso.GetFolder(dropzone)
deletefolder.Delete(True)
set fso = Nothing
尝试使用Kill(“文件夹路径”)这很可能不是实际的“拒绝访问”。更有可能是“文件打开时无法删除”。关闭对该文件夹的所有打开引用(文本流、您可能已启动的进程,请仔细查看),然后执行以下操作:
请参阅。检查文件的属性,如果尚未设置,请将其设置为0
set deletefolder = fso.GetFolder(dropzone)
if deletefolder.Attributes=0 then
deletefolder.Delete(True)
else
deletefolder.Attributes=0
deletefolder.Delete(True)
end if
set fso = Nothing
@giodamelio很奇怪,我在你的代码前面加了一行
msgBox dropzone
,它成功了。当我注释掉msgbox
时,它不会工作吗
- 你的代码或电脑太快了!:D
- 您可能没有处理/关闭您使用或存储在该文件夹中的文件(或未正确关闭)
现在,请随意拍摄messenger…即使将其属性设置为0,我仍然会被拒绝权限 它还是16岁 我知道这不是答案。 但是我不想为同一个查询打开一个新线程。 我也尝试过为特定路径执行任务终止
如果文件夹路径有反斜杠,该方法将抛出错误!我的大多数脚本都有一个反斜杠,在路径的末尾故意使用另一个函数,所以我删除了路径的最后一个字符(反斜杠)和中提琴 我用
shell.run()
运行了一个进程,但之后我设置了set shell=Nothing
。@giodamelio:是的,但是将shell
设置为Nothing不会停止进程。你必须等到它完成。有一个bWaitOnReturn
参数正是为了这个目的:你能通过cmd删除文件夹吗?@giodamelio奇怪的是,我在你编码之前放了行msgBox dropzone,它就工作了。当我注释掉msgbox时,它不会工作???-你的代码或电脑太快了!:D-您可能不会处理/关闭您使用或存储在该文件夹中的文件(或未正确关闭)。谢谢,这是正确的,如果您将其添加到答案中,我会将其标记为正确。奇怪的是,我在您编写代码之前添加了行msgBox dropzone
。当我评论msgbox时,它不会工作???@giodamelio-听起来你让它工作了。我打算建议在创建文件并在执行删除之前打开另一个实例后,将fso设置为nothing。有时fso似乎不想释放文件句柄。如果使用objFolder.Delete(True),后面的反斜杠应该不会有问题。如果使用objFSO.DeleteFolder,多余的尾随反斜杠会导致错误:“未找到路径”,代码:800A004C。
set deletefolder = fso.GetFolder(dropzone)
if deletefolder.Attributes=0 then
deletefolder.Delete(True)
else
deletefolder.Attributes=0
deletefolder.Delete(True)
end if
set fso = Nothing
Dim FSO, Folder
set FSO=CreateObject("Scripting.FileSystemObject")
Folder=WScript.Arguments(0)
Folder1=WScript.Arguments(1)
Folder2=WScript.Arguments(2)
File=WScript.Arguments(3)
If FSO.FolderExists(Folder) Then
set deletefolder = fso.GetFolder(Folder)
if deletefolder.Attributes=0 then
deletefolder.Delete(True)
else
deletefolder.Attributes=0
msgbox deletefolder.Attributes 'Still coming as 16
deletefolder.Delete(True)
end if
msgbox "Deleted"
FSO.CreateFolder(Folder)
End If
If FSO.FolderExists(Folder1) Then
FSO.CreateFolder(Folder1)
End If
If FSO.FolderExists(Folder2) Then
FSO.CreateFolder(Folder2)
End If
If Not FSO.FileExists(File) Then
FSO.CreateTextFile(File)
End If
WScript.StdOut.Write(File)
'FSO.CopyFolder WScript.Arguments(1), WScript.Arguments(0)&"\"
'msgbox Day(Date)
'FSO.CreateTextFile Folder&"\"&"LogPR_To_PO_"&Day(Date)&"_"&Month(Date)&"_"&Year(Date)&".txt"
Set FSO=nothing