File io 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.

我有一个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.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
  • 您可能没有处理/关闭您使用或存储在该文件夹中的文件(或未正确关闭)

要使用DeleteFolder,脚本的当前目录不应是要删除的文件夹路径的一部分。 使用Shell.CurrentDirectory将当前目录更改为某个系统路径,然后调用DeleteFolder。 我已经证实这是可行的。 检查
  • 不,没有时间问题
  • 不,没问题
  • 不,不是MsgBox解决的问题
  • 不,属性没有问题
  • 不,当前目录路径没有问题
  • 不,不能用Kill
  • 不,这不是拒绝访问
  • 不,你不必付钱
  • 不,MSDN文档不会告诉您
  • 您只需删除路径中的尾随反斜杠,因为DELETEFOLDER不喜欢它


    现在,请随意拍摄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