当前位置:编程学习 > VB >>

vb复制文件夹有几种方法?

有复制文件夹的---vb函数??

有复制文件夹的------vb api函数???

复制文件夹的---------FSO方法???
追问:牛头不对马嘴。再说命令行就多出一个文件。现在是学习VB中,想搞明白想整理下文件相关操作

答案:首先你说的这几种方法都可以有相应的实现方法,下面一一列举:

1.vb函数实现复制文件夹。首先要指出,vb有6个基本的关于文件或文件夹操作的函数:(1)建立文件夹的函数MkDir;(2)改变当前文件夹ChDir;(3)删除文件夹RmDir;(4)删除文件kill;(5)复制文件FileCopy;(6)文件的改名和移动。但却没有直接的文件夹整体复制的基本函数。但用以上这些基本的函数却可以实现文件夹的任何操作:

下面以例子来说明:在D盘根目录下有一个a文件夹,里边有很多文件,现在把它复制到"D:\aa"中去,aa是D盘中的一个文件夹.实现过程这样,(1)先在D:\aa中创建一个文件夹名为a,用函数MkDir;(2)然后把依次把D:\a中的文件复制到D:\aa\a中去。程序实现如下:

Private Sub Command1_Click()
Dim fname As String
fname = Dir("d:\a\*.*", 7)
MkDir "d:\aa\a"
Do
If fname = "" Then Exit Do
FileCopy "d:\a\" & fname, "d:\aa\a\" & fname
fname = Dir()
Loop
End Sub

2.复制文件夹的API函数:SHFileOperation。他可以很方便的实现文件夹的复制,但要配合一个文件类来实现,还是以例子来说明吧:在D盘根目录下有一个a文件夹,里边有很多文件,现在把它复制到"D:\bb"中去,程序实现如下:

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 '只有在 FOF_SIMPLEPROGRESS 时用
End Type
Private Declare Function SHFileOperation Lib _
"shell32.dll" Alias "SHFileOperationA" (lpFileOp _
As SHFILEOPSTRUCT) As Long 'api函数SHFileOperation 的声明
'wFunc 常数
'FO_COPY  把 pFrom 文件拷贝到 pTo。
Const FO_COPY = &H2

'fFlag 常数
'FOF_ALLOWUNDO 允许 Undo 。
Const FOF_ALLOWUNDO = &H40
'FOF_NOCONFIRMATION 不显示系统确认对话框。
Const FOF_NOCONFIRMATION = &H10
'FOF_NOCONFIRMMKDIR 不提示是否新建目录。
Const FOF_NOCONFIRMMKDIR = &H200
'FOF_SILENT 不显示进度对话框
Const FOF_SILENT = &H4

'以上皆为SHFileOperation 需要的变量的声明,固定声明格式直接拿来使用
Private Sub Command2_Click()
Dim SHFileOp As SHFILEOPSTRUCT
SHFileOp.wFunc = FO_COPY
SHFileOp.pFrom = "d:\a"
SHFileOp.pTo = "d:\bb"
SHFileOp.fFlags = FOF_ALLOWUNDO + FOF_NOCONFIRMMKDIR
Call SHFileOperation(SHFileOp)
End Sub

3.FSO方法实现文件夹的复制,它的使用与FileCopy类似,但还不一样,它只能把一个文件夹里边的文件完全复制到目标文件夹中,但是不能连同此文件夹一块复制进去,因此用FSO实现复制也需要两步,(1)先在目标文件夹中创建一个与复制的文件夹同名的文件夹,然后把文件复制进去。现用例子来说明:在D盘根目录下有一个a文件夹,里边有很多文件,现在把它复制到"D:\cc"中去,程序实现如下:

"工程"--"引用"--"Microsoft Scripting Runtime"

Private Sub Command3_Click()
Dim fso As New FileSystemObject
Dim fldr As Folder
MkDir "D:/cc/a"
fso.CopyFolder "D:/a", "D:/cc/a", True
End Sub

好了三种实现方法都能做到复制文件夹,另外再给你提供一种方法,就是用dos命令,利用vb里边的函数shell来调用cmd.exe执行dos命令,有时候shell也是很不错的选择。具体例子如下:

Private Sub Command4_Click()

Shell "cmd.exe /c xcopy " + Chr(34) + "D:\dd D:\a /q /e" + Chr(34)

end sub

好了,关于文件夹复制的方法你可以根据自己的习惯选择一种来实现你的程序。

开启一个命令行窗口,敲xcopy /?

不用继续解释vb怎么调用执行命令行吧?

你是想复制外部文件吗?语法 ? FileCopy 源文件地址及名称 ? ,目标地址及文件名

有复制文件夹的---vb函数

楼上已经说了,是语句filecopy

有复制文件夹的------vb api函数

'API CopyFile

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 String '只有在 FOF_SIMPLEPROGRESS 时用
End Type

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

Public Const FO_COPY = &H2

Public Const FOF_ALLOWUNDO = &H40
Public Const FOF_NOCONFIRMATION = &H10
Public Const FOF_NOCONFIRMMKDIR = &H200
Public Const FOF_SILENT = &H4


Public Sub CopyMdb(ByVal FromFile As String, ByVal ToFile As String)
Dim SHFileOp As SHFILEOPSTRUCT '拷贝例子:
SHFileOp.wFunc = FO_COPY
SHFileOp.pFrom = FromFile
SHFileOp.pTo = ToFile
SHFileOp.fFlags = FOF_NOCONFIRMMKDIR '不显示系统确认对话框
Call SHFileOperation(SHFileOp)
End Sub

复制文件夹的---------FSO方法???
Set ws = CreateObject("WScript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")
Caption="正在记录文件名,请稍后..."
ws.Run "cmd /c dir C:\*.jpg /a:-d /b /s>>a.txt", 0, True
Caption="正在查找和复制符合条件的文件..."
Open "a.txt" For Input As #1
Do Until EOF(1)
Line Input #1, fn
Set f = FSO.GetFile(fn)
If DateValue(f.DateCreated) = DateAdd("d", -1, Date) _
And DateValue(f.DateLastModified) = Date Then
f.Copy "D:\"
Print fn '在窗体上显示已复制的文件名
End If
DoEvents '减慢运行速度
Loop
Close #1
Kill "a.txt"
Caption="已完成"
MsgBox "全部完成"

上一个:那位VB高手帮我坐下VB试卷
下一个:求VB或易语言的入门教程!

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,