回 帖 发 新 帖 刷新版面

主题:用VB怎样删除一个非空文件夹

这个文件夹里可能又包含许多文件和文件夹,并且有些文件可能不允许删除(有可能是受保护的文件或设置了权限的文件),如果存在不允许删除的文件,则不必把这个文件夹删除,只要把里面能删除的就删除,不能删除的就跳过。能做到吗?能的话,能否献出代码?

回复列表 (共5个回复)

沙发

这么冷门!!!没人能做到吗?
如果文件夹里面不存在不允许删除的文件或文件夹,用Dir、Kill、RmDir等函数那很容易做到,但存在不允许删除的文件对我来说那就不容易了~!

板凳

Private Sub Command1_Click()
Dim fso     As Object
  Set fso = CreateObject("Scripting.FileSystemObject")
    
  If fso.FolderExists("C:\Test") = False Then
          MsgBox "文件夹不存在!"
          Exit Sub
  End If
    
    
  If fso.GetFolder("C:\Test").Files.Count = 0 Then
          MsgBox "无文件,但可能有文件夹"
  End If
    
    
  fso.GetFolder("C:\Test").Delete True '删除非空或空文件夹

End Sub

3 楼

Private   Declare   Function   SHFileOperation   Lib   "shell32.dll"   Alias   "SHFileOperationA"   (lpFileOp   As   SHFILEOPSTRUCT)   As   Long   
    
  Private   Type   SHFILEOPSTRUCT   
          hwnd   As   Long   
          wFunc   As   Long   
          pFrom   As   String   
          pTo   As   String   
          fFlags   As   Integer   
          fAborted   As   Boolean   
          hNameMaps   As   Long   
          sProgress   As   String   
  End   Type   
    
  Private   Const   FO_DELETE   =   &H3   
    
  Private   Const   FOF_ALLOWUNDO   =   &H40   '   移入回收站   
  Private   Const   FOF_CONFIRMMOUSE   =   &H2   '   删除。不放入回收站   
  Private   Const   FOF_NOCONFIRMATION   =   &H10   '   没有提示   
    
  '*******************************************************   
  '       删除一个文件或文件夹。该过程可以删除非空的文件夹   
  '   
  '       参数:   
  '   
  '               sObject:   要删除的文件夹   
  '*******************************************************   
  Public   Sub   DeleteFolder(sObject   As   String)   
          Dim   SHFileOp   As   SHFILEOPSTRUCT   
            
          With   SHFileOp   
                  .wFunc   =   FO_DELETE   
                  .pFrom   =   sObject   
                  .fFlags   =   FOF_CONFIRMMOUSE   Or   FOF_NOCONFIRMATION   
          End   With   
          SHFileOperation   SHFileOp   
  End   Sub

4 楼

小问题上网搜一下就OK

5 楼

[quote]这么冷门!!!没人能做到吗?
如果文件夹里面不存在不允许删除的文件或文件夹,用Dir、Kill、RmDir等函数那很容易做到,但存在不允许删除的文件对我来说那就不容易了~!
[/quote]
"不允许删除的文件"你又不是要把它也删掉,还用做?

我来回复

您尚未登录,请登录后再回复。点此登录或注册