CopyFolder 方法
描述
从一个地方递归地复制一个文件夹到另一个地方。
语法
object.CopyFolder source, destination[,
overwrite]
实现代码中的source路径不能有错,否则VB报错。
将C盘下的Program Flles目录夹复制到D盘Program Flles目录夹的实际代码如下:
Private Sub Command1_Click()
CreateObject("scripting.filesystemobject").copyfolder "c:\Program Files", "D:\Program Files"
End Sub
用CopyFolder 方法可以复制文件夹。语法
object.CopyFolder source, destination[, overwrite]
其中,object只能是FileSystemObject对象(见后面示例).
CopyFolder 方法语法有如下几部分:
Object 必需的。始终为一个 FileSystemObject 的名字。
source 必需的。指明一个或多个被复制文件夹的字符串文件夹说明,可以包括通配符。
destination 必需的。指明 source 中被复制文件夹和子文件夹的接受端的字符串,不允许有通配符。
overwrite 选项的。Boolean 值,它表示已存在的文件夹是否被覆盖。如果为 True,文件被覆盖。如果为 False,文件不被覆盖。缺省值为 True。
说明
通配符仅可用于 source 参数的最后一个路径部件。例如你可以在下面情况使用它:
FileSystemObject.CopyFolder "c:\mydocuments\letters\*", "c:\tempfolder\"
但不能在下面情况使用它:
FileSystemObject.CopyFolder "c:\mydocuments\*\*", "c:\tempfolder\"
如果 source 包含通配符或 destination 以路径分隔符(\)为结尾,则认为 destination 是一个已存在的文件夹,在其中复制相匹配的文件夹和子文件夹。否则认为 destination 是一个要创建的文件夹的名字。不论何种情况,当复制一个文件夹时,可能发生四种事件。
如果 destination 不存在,source 文件夹和它所有的内容得到复制。这是通常的情况。
如果 destination 是一个已存在的文件,则发生一个错误。
如果 destination 是一个目录,它将尝试复制文件夹和它所有的内容。如果一个包含在 source 的文件已在 destination 中存在,当 overwrite 为 False 时发生一个错误,否则它将尝试覆盖这个文件。
如果 destination 是一个只读目录,当尝试去复制一个已存在的只读文件到此目录并且 overwrite为 False 时,则发生一个错误。
如果 source 使用的通配符不能和任何文件夹匹配,也发生一个错误。
CopyFolder 方法停止在它遇到的第一个错误上。不要尝试回卷错误发生前所做的任何改变。
示例:
Set fs = CreateObject("Scripting.FileSystemObject")
fs.CopyFolder "C:\Downloads\", "D:\"
FileSystemObject对象除了CopyFolder方法,还有其它很多,如BuildPath、CopyFile、CreatFolder等等,详见msdn帮助
这么简单的东西,你就不用花冤枉钱了,我免费给你:
Private Sub Form_Load()Me.OLEDropMode = 1
End Sub
Private Sub Form_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim ff, fso As Object, fn As Integer, dn As Integer
Set fso = CreateObject("scripting.filesystemobject")
For Each ff In Data.Files
If fso.fileexists(ff) Then
fso.copyfile ff, "d:\tmp\" & fso.getfilename(ff) & "." & Format(Now, "yyyymmddhhnnss"), True
fn = fn + 1
Else
fso.copyfolder ff, "d:\tmp\" & fso.getfilename(ff) & "." & Format(Now, "yyyymmddhhnnss"), True
dn = dn + 1
End If
Next
Set fso = Nothing
MsgBox "共复制" & fn & "个文件," & dn & "个文件夹"
End Sub
以上代码没有用到任何控件,也不需进行任何设置,直接把代码复制到窗体的代码区,编译为EXE文件即可。运行后把文件或文件夹拖到窗体中即可,可以多个文件同时拖,也可以文件和文件夹混合拖。
文件的保存位置是d:\tmp\,你可以自己改。
时间后缀我是直接加在文件或文件夹的后面的,如果不符要求你可以自己改,让我改也行。
另外这是VB6的代码,如果你要的不是这个版本的,那就对不起了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)