主题:用VB怎样删除一个非空文件夹
xjh22700
[专家分:320] 发布于 2008-04-19 20:52:00
这个文件夹里可能又包含许多文件和文件夹,并且有些文件可能不允许删除(有可能是受保护的文件或设置了权限的文件),如果存在不允许删除的文件,则不必把这个文件夹删除,只要把里面能删除的就删除,不能删除的就跳过。能做到吗?能的话,能否献出代码?
回复列表 (共5个回复)
沙发
xjh22700 [专家分:320] 发布于 2008-04-20 14:19:00
这么冷门!!!没人能做到吗?
如果文件夹里面不存在不允许删除的文件或文件夹,用Dir、Kill、RmDir等函数那很容易做到,但存在不允许删除的文件对我来说那就不容易了~!
板凳
freedom12 [专家分:50] 发布于 2008-04-20 20:52:00
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 楼
freedom12 [专家分:50] 发布于 2008-04-20 20:52:00
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 楼
freedom12 [专家分:50] 发布于 2008-04-20 20:53:00
小问题上网搜一下就OK
5 楼
guoyong_cy [专家分:3050] 发布于 2008-05-06 22:55:00
[quote]这么冷门!!!没人能做到吗?
如果文件夹里面不存在不允许删除的文件或文件夹,用Dir、Kill、RmDir等函数那很容易做到,但存在不允许删除的文件对我来说那就不容易了~!
[/quote]
"不允许删除的文件"你又不是要把它也删掉,还用做?
我来回复