File io 删除vb6目录中的所有文件

File io 删除vb6目录中的所有文件,file-io,vb6,delete-file,File Io,Vb6,Delete File,我想知道是否有人可以帮助我使用vb6功能,该功能可以删除目录(不包括子目录)中的所有文件。我认为这应该可以: Dim oFs As New FileSystemObject Dim oFolder As Folder Dim oFile As File If oFs.FolderExists(FolderSpec) Then Set oFolder = oFs.GetFolder(FolderSpec) 'caution! On Error Resume Next

我想知道是否有人可以帮助我使用vb6功能,该功能可以删除目录(不包括子目录)中的所有文件。

我认为这应该可以:

Dim oFs As New FileSystemObject
Dim oFolder As Folder
Dim oFile As File

If oFs.FolderExists(FolderSpec) Then
    Set oFolder = oFs.GetFolder(FolderSpec)

    'caution!
    On Error Resume Next

    For Each oFile In oFolder.Files
        oFile.Delete True 'setting force to true will delete a read-only file
    Next

    DeleteAllFiles = oFolder.Files.Count = 0
End If

End Function

我并没有测试过所有的场景,但它应该可以工作。它应该删除每个文件,如果文件被锁定或您没有访问权限,您应该会看到错误70,并且您会看到一个中止、重试或忽略框

Sub DeleteAllFilesInDir(ByVal pathName As String)
  On Error GoTo errorHandler
  Dim fileName As String
  If Len(pathName) > 0 Then
    If Right(pathName, 1) <> "\" Then pathName = pathName & "\"
  End If
  fileName = Dir(pathName & "*")

  While Len(fileName) > 0
    Kill pathName & fileName
    fileName = Dir()
  Wend

  Exit Sub
errorHandler:
  If Err.Number = 70 Then
    Select Case MsgBox("Could not delete " & fileName & ". Permission denied. File may be open by another user or otherwise locked.", vbAbortRetryIgnore, "Unable to Delete File")
      Case vbAbort:
        Exit Sub
      Case vbIgnore:
        Resume Next
      Case vbRetry:
        Resume
    End Select
  Else
    MsgBox "Error deleting file " & fileName & ".", vbOKOnly Or vbCritical, "Error Deleting File"
  End If
End Sub
Sub-deleteAllFileIndir(ByVal路径名为字符串)
关于错误转到错误处理程序
将文件名设置为字符串
如果Len(路径名)>0,则
如果正确(路径名,1)“\”则路径名=路径名&“\”
如果结束
fileName=Dir(路径名&“*”)
而Len(文件名)>0
终止路径名和文件名
fileName=Dir()
温德
出口接头
错误处理程序:
如果错误编号=70,则
选择Case MsgBox(“无法删除”&fileName&“。权限被拒绝。文件可能被其他用户打开或以其他方式锁定。”,vbAbortRetryIgnore,“无法删除文件”)
案例B中止:
出口接头
案例vbIgnore:
下一步继续
案例vbRetry:
简历
结束选择
其他的
MsgBox“删除文件时出错”&fileName&“,”vbOKOnly或vbCritical,“删除文件时出错”
如果结束
端接头

一行,使用VB6语句

“在Microsoft Windows中,Kill支持使用多字符(*)和单字符(?)通配符来指定多个文件”


顺便说一下,我更喜欢避免使用Microsoft脚本运行时(包括FileSystemObject)。根据我的经验,它偶尔会在用户机器上被破坏,可能是因为他们的it部门对病毒心存疑虑

脚本运行时FileSystemObject的DeleteFile方法似乎也支持通配符,因为这对我来说很有用:

Dim fs As New Scripting.FileSystemObject
fs.Deletefile "C:\Temp\*.jpg", true

与@Corazu建议的方法相比,这种方法的控制力更小,但在某些情况下可能有一些实用性。

我在“Dim of s As New FileSystemObject”中遇到一个错误“User Defined Type not Defined”(用户定义的类型未定义)这是因为您需要添加对FileSystemObject的引用才能使用它。但我不记得确切的引用名称是什么。“要使用FileSystemObject,您必须在项目引用对话框中为您的项目选择Microsoft脚本运行时。”根据:无需迭代文件。FileSystemObject的DeleteFile方法将接受通配符。我似乎总是过于复杂。我应该记住这一点。在Access 2000中,在Kill命令中使用
“***”
通配符将失败,即使该目录中的一个文件被锁定(或打开)。+1表示同情,因为我认为这不值得-1。虽然“Kill”&路径名&“*.*”肯定更短。
Dim fs As New Scripting.FileSystemObject
fs.Deletefile "C:\Temp\*.jpg", true