在VB里怎么样删除一个文件夹里的所有文件?

lyj670 2002-04-18 02:52:19
在VB里怎么样删除一个文件夹里的所有文件?
...全文
432 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ttyp 2002-04-18
  • 打赏
  • 举报
回复
我写的模块

Public Type SHFILEOPSTRUCT
hWnd As Long
wFunc As Long
pFrom As String
pTo As String
fFlags As Integer
fAnyOperationsAborted As Long
hNameMappings As Long
lpszProgressTitle As Long
End Type
Public Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long



'//wFunc
Public Const FO_MOVE = &H1
Public Const FO_COPY = &H2
Public Const FO_DELETE = &H3
Public Const FO_RENAME = &H4

'//fFlags

Public Const FOF_ALLOWUNDO = &H40 '//允许反悔
Public Const FOF_FILESONLY = &H80 '//只允许文件操作,不允许目录操作
Public Const FOF_MULTIDESTFILES = &H1 '//允许多个目的目录或文件
Public Const FOF_NOCONFIRMATION = &H10 '//不做预先征询使用者

Public Const FOF_RENAMEONCOLLISION = &H8 '//需要建立新目录时,不预先征询使用者
Public Const FOF_SILENT = &H4 '//不显示进度对话框

'==========================================================================================
'〖名  称〗:MoveFile
'〖功  能〗:移动文件
'〖参  数〗:
'〖返  回〗:
'〖备  注〗:
'〖作  者〗:TTyp
'〖创建日期〗:2002-4-11 0:04:35
'==========================================================================================

Public Sub MoveFile(FromFileName As String, ToFileName As String, Optional Flag As Long = FOF_FILESONLY)

Dim SHFileOp As SHFILEOPSTRUCT

SHFileOp.wFunc = FO_MOVE
SHFileOp.pFrom = FromFileName
SHFileOp.pTo = ToFileName
SHFileOp.fFlags = Flag

SHFileOperation SHFileOp

End Sub


'==========================================================================================
'〖名  称〗:MoveDir
'〖功  能〗:移动整个目录
'〖参  数〗:
'〖返  回〗:
'〖备  注〗:
'〖作  者〗:TTyp
'〖创建日期〗:2002-4-10 23:55:21
'==========================================================================================

Public Sub MoveDir(FromDir As String, ToDir As String, Optional Flag As Long = FOF_MULTIDESTFILES)

Dim SHFileOp As SHFILEOPSTRUCT

SHFileOp.wFunc = FO_MOVE
SHFileOp.pFrom = FromDir
SHFileOp.pTo = ToDir
SHFileOp.fFlags = Flag

SHFileOperation SHFileOp

End Sub

'==========================================================================================
'〖名  称〗:XCopyDir
'〖功  能〗:拷贝目录(类似XCopy)
'〖参  数〗:
'〖返  回〗:
'〖备  注〗:
'〖作  者〗:TTyp
'〖创建日期〗:2002-4-10 23:55:44
'==========================================================================================

Public Sub XCopyDir(FromDir As String, ToDir As String, Optional Flag As Long = FOF_NOCONFIRMATION)

Dim SHFileOp As SHFILEOPSTRUCT

SHFileOp.wFunc = FO_COPY
SHFileOp.pFrom = IIf(Right(FromDir, 1) = "\", FromDir, FromDir & "\") & "*.*"
SHFileOp.pTo = ToDir
SHFileOp.fFlags = Flag

SHFileOperation SHFileOp

End Sub

'==========================================================================================
'〖名  称〗:Del2Dustbin
'〖功  能〗:删除文件到回收站
'〖参  数〗:
'〖返  回〗:
'〖备  注〗:
'〖作  者〗:TTyp
'〖创建日期〗:2002-4-10 23:49:30
'==========================================================================================

Public Sub Del2Dustbin(FromDir As String, ToDir As String, Optional Flag As Long = FOF_ALLOWUNDO)

Dim SHFileOp As SHFILEOPSTRUCT

SHFileOp.wFunc = FO_MOVE
SHFileOp.pFrom = IIf(Right(FromDir, 1) = "\", FromDir, FromDir & "\") & "*.*"
SHFileOp.pTo = ToDir
SHFileOp.fFlags = Flag

SHFileOperation SHFileOp

End Sub

'==========================================================================================
'〖名  称〗:DeleteDir
'〖功  能〗:删除整个目录(类似Deltree)
'〖参  数〗:FormDir->要删除的目录 Flag->标志
'〖返  回〗:
'〖备  注〗:
'〖作  者〗:TTyp
'〖创建日期〗:2002-4-10 23:50:20
'==========================================================================================

Public Sub DeleteDir(FromDir As String, Optional Flag As Long = FOF_NOCONFIRMATION)

Dim SHFileOp As SHFILEOPSTRUCT
Dim suc As Long

SHFileOp.wFunc = FO_DELETE
SHFileOp.pFrom = FromDir
SHFileOp.pTo = vbNullString
SHFileOp.fFlags = Flag

suc = SHFileOperation(SHFileOp)

End Sub

'==========================================================================================
'〖名  称〗:DeleteFile
'〖功  能〗:删除文件
'〖参  数〗:FromFileName->要删除的文件 Flag->标示
'〖返  回〗:
'〖备  注〗:
'〖作  者〗:TTyp
'〖创建日期〗:2002-4-10 23:53:41
'==========================================================================================

Public Sub DeleteFile(FromFileName As String, Optional Flag As Long = FOF_NOCONFIRMATION)

Dim SHFileOp As SHFILEOPSTRUCT

SHFileOp.wFunc = FO_DELETE
SHFileOp.pFrom = FromFileName
SHFileOp.fFlags = Flag

SHFileOperation SHFileOp

End Sub
ayuu 2002-04-18
  • 打赏
  • 举报
回复
txs() 说的也是一个好方法:)
whoke 2002-04-18
  • 打赏
  • 举报
回复
好像不能用递归,只能依次读出所有文件保存到数组,然后从后至前逐个删除
txs 2002-04-18
  • 打赏
  • 举报
回复
其实调用DELTREE不是挺好的?程序也简单
smalle 2002-04-18
  • 打赏
  • 举报
回复
dir可以递归的么?
lyj670 2002-04-18
  • 打赏
  • 举报
回复
C:\WINDOWS\Temporary Internet Files\

我想删除这里面的所有内容,
是WIN98系统里IE临时文件的存放位置,怎么删除?
lihonggen0 2002-04-18
  • 打赏
  • 举报
回复

采用递归算法删除带有多级子目录的目录

 



Option Explicit

Private Sub Command1_Click()
Dim strPathName As String
strPathName = ""
strPathName = InputBox("请输入需要删除的文件夹名称∶", "删除文件夹")
If strPathName = "" Then Exit Sub

On Error GoTo ErrorHandle
SetAttr strPathName, vbNormal '此行主要是为了检查文件夹名称的有效性
RecurseTree strPathName
Label1.Caption = "文件夹" & strPathName & "已经删除!"
Exit Sub
ErrorHandle:
MsgBox "无效的文件夹名称:" & strPathName
End Sub

Sub RecurseTree(CurrPath As String)
Dim sFileName As String
Dim newPath As String
Dim sPath As String
Static oldPath As String

sPath = CurrPath & "\"

sFileName = Dir(sPath, 31) '31的含义∶31=vbNormal+vbReadOnly+vbHidden+vbSystem+vbVolume+vbDirectory
Do While sFileName <> ""
If sFileName <> "." And sFileName <> ".." Then
If GetAttr(sPath & sFileName) And vbDirectory Then '如果是目录和文件夹
newPath = sPath & sFileName
RecurseTree newPath
sFileName = Dir(sPath, 31)
Else
SetAttr sPath & sFileName, vbNormal
Kill (sPath & sFileName)
Label1.Caption = sPath & sFileName '显示删除过程
sFileName = Dir
End If
Else
sFileName = Dir
End If
DoEvents
Loop
SetAttr CurrPath, vbNormal
RmDir CurrPath
Label1.Caption = CurrPath
End Sub




 


lihonggen0 2002-04-18
  • 打赏
  • 举报
回复

如何用程序来Delete Copy Move Rename File/Directory

作者: 王国荣 

Private Type SHFILEOPSTRUCT
hwnd As Long
wFunc As Long
pFrom As String
pTo As String
fFlags As Integer
fAnyOperationsAborted As Long
hNameMappings As Long
lpszProgressTitle As String ' only used if FOF_SIMPLEPROGRESS
End Type
'wFunc 的设定值
'FO_COPY Copies the files specified by pFrom to the location specified by pTo.
'FO_DELETE Deletes the files specified by pFrom (pTo is ignored).
'FO_MOVE Moves the files specified by pFrom to the location specified by pTo.
'FO_RENAME Renames the files specified by pFrom.

'fFlag的设定
'FOF_ALLOWUNDO Preserves undo information, if possible.
'FOF_FILESONLY Performs the operation only on files if a wildcard filename
' (*.*) is specified.
'FOF_MULTIDESTFILES Indicates that the pTo member specifies multiple destination
' files (one for each source file) rather than one directory where
' all source files are to be deposited.
'FOF_NOCONFIRMATION Responds with "yes to all" for any dialog box that is displayed.
'FOF_NOCONFIRMMKDIR Does not confirm the creation of a new directory if
' the operation requires one to be created.
'FOF_RENAMEONCOLLISION Gives the file being operated on a new name (such as
' "Copy #1 of...") in a move, copy, or rename operation
' if a file of the target name already exists.
'FOF_SILENT Does not display a progress dialog box.
'FOF_SIMPLEPROGRESS Displays a progress dialog box, but does not show the
' filenames.
'FOF_WANTMAPPINGHANDLE Fills in the hNameMappings member. The handle must be
' freed by using the SHFreeNameMappings function.

Const FO_MOVE = &H1
Const FO_COPY = &H2
Const FO_DELETE = &H3
Const FOF_NOCONFIRMATION = &H10
Const FOF_NOCONFIRMMKDIR = &H200
Const FOF_ALLOWUNDO = &H40
Const FOF_SILENT = &H4


Private Declare Function SHFileOperation Lib "shell32.dll" Alias _
"SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long

'删除 test目录及其底下的子目录到资源回收桶
Private Sub Command1_Click()
Dim SHFileOp As SHFILEOPSTRUCT

SHFileOp.wFunc = FO_DELETE
SHFileOp.pFrom = "c:\test" + Chr(0)
'不出现档案删除的动态AVI,且不Confirm
SHFileOp.fFlags = FOF_SILENT + FOF_ALLOWUNDO + FOF_NOCONFIRMATION
'若没有 FOF_ALLOWUNDO 则不会到资源回收桶
Call SHFileOperation(SHFileOp)
End Sub

'同时删除多档到资源回收桶
Private Sub Command2_Click()
Dim SHFileOp As SHFILEOPSTRUCT
Dim Files As String
'Files = "c:\test.txt" + Chr(0)
Files = "c:\test1.txt" + Chr(0) + "c:\test2.txt" + Chr(0) + _
"c:\test3.txt" + Chr(0)
SHFileOp.wFunc = FO_DELETE
SHFileOp.pFrom = Files
'删至资源回收桶,且不Confirm
SHFileOp.fFlags = FOF_ALLOWUNDO + FOF_NOCONFIRMATION
Call SHFileOperation(SHFileOp)
End Sub

'将 c:\temp 整个目录复制到 c:\temp2
Private Sub Command3_Click()
Dim SHFileOp As SHFILEOPSTRUCT

SHFileOp.wFunc = FO_COPY
SHFileOp.pFrom = "c:\temp\*.*"
SHFileOp.pTo = "c:\temp2\*.*"
SHFileOp.fFlags = FOF_ALLOWUNDO + FOF_NOCONFIRMMKDIR
Call SHFileOperation(SHFileOp)
End Sub

'将 c:\test4.txt 快速移到 c:\temp 目录
Private Sub Command4_Click()
Dim SHFileOp As SHFILEOPSTRUCT

SHFileOp.wFunc = FO_MOVE
SHFileOp.pFrom = "c:\test4.txt" + Chr(0)
SHFileOp.pTo = "c:\temp"
SHFileOp.fFlags = FOF_ALLOWUNDO + FOF_NOCONFIRMATION
Call SHFileOperation(SHFileOp)
End Sub



 


lyj670 2002-04-18
  • 打赏
  • 举报
回复
pathname = "C:\WINDOWS\Temporary Internet Files\*.*"
Kill pathname

我用他删除这玩意时出现文件没找到的提示
leonkim 2002-04-18
  • 打赏
  • 举报
回复
使用filesystemobject指向此文件夹,然后对此文件夹的files数组进行delete,即可。for each file1 in direct1.files
ayuu 2002-04-18
  • 打赏
  • 举报
回复
从磁盘中删除文件。

语法

Kill pathname

必要的 pathname 参数是用来指定一个文件名的字符串表达式。pathname 可以包含目录或文件夹、以及驱动器。

说明

在 Microsoft Windows 中,Kill 支持多字符 (*) 和单字符 (?) 的统配符来指定多重文件。

你只要把最后的文件名指定为*.*就可以了:-)
gump2000 2002-04-18
  • 打赏
  • 举报
回复
http://www.21code.com/codebase/?pos=down&id=270
参考此代码

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧