我正在编写一个简单的脚本来删除“我的文档”目录中的所有文本文件。该脚本工作正常,但在删除最后一个文件后,它给出了权限被拒绝(错误代码: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
答案 0 :(得分:2)
您应该更改此行以设置 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