首页 > 解决方案 > VBS 错误 - 删除文件时权限被拒绝

问题描述

我正在编写一个简单的脚本来删除“我的文档”目录中的所有文本文件。该脚本工作正常,但在删除最后一个文件后,它给出了 Permission Denied(错误代码:800A0046)。例如,如果我在目录中有 3 个 .txt 文件,则在删除第 3 个文件后出现错误。我认为这不是权限问题,因为在这种情况下,不会删除任何文件。这是我所缺少的非常基本的东西。我添加了 1 秒的延迟,让我可以看到文件一个接一个地被删除。这是脚本:

Set objFSO = CreateObject("Scripting.FileSystemObject")

objFolder = CreateObject("Wscript.Shell").specialfolders("MyDocuments")

Dim objFile

For each objFile in objFolder.Files
If LCase(objFSO.GetExtensionName(objFile.name)) = "txt" Then
objFSO.DeleteFile(objFile), True
Wscript.Sleep 1000
End If
Next

标签: vbscript

解决方案


您应该更改此行以设置objFolder

objFolder = CreateObject("Wscript.Shell").specialfolders("MyDocuments")

Set objFolder = objFSO.GetFolder(CreateObject("Wscript.Shell").SpecialFolders("MyDocuments"))

这是一个快速测试,用于列出我的文档文件夹中的所有文本文件:

Option Explicit
Dim objFSO,objFile,objFolder,MyDoc,F
Set objFSO = CreateObject("Scripting.FileSystemObject")
MyDoc = CreateObject("Wscript.Shell").SpecialFolders("MyDocuments")

Set objFolder = objFSO.GetFolder(MyDoc)

For each objFile in objFolder.Files
If LCase(objFSO.GetExtensionName(objFile.name)) = "txt" Then
    F = F & objFile & vbcrlf
End If
Next
wscript.echo F

推荐阅读