FileSystemObject如果实现连同文件夹同时COPY

maskdata 2005-03-31 06:58:30
问题大概如下:
我的D盘下有一个文件夹AAA,AAA文件夹下有一个文件1.txt

我希望复制D:\AAA\1.txt到C:\AAA\1.txt
前提是我C盘下无文件夹AAA,我也不希望通过CopyFolder方式把整个文件夹下的文件全复制过去
也不想手动去建立这个文件夹

有没有办法直接复制文件,如果目标地址路径不对则自动生成相关的文件夹?
...全文
118 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
maskdata 2005-05-14
  • 打赏
  • 举报
回复
vanquoxf 2005-04-01
  • 打赏
  • 举报
回复
同意LPan008()
如果没有就createfolder
再循环copy
vanquoxf 2005-04-01
  • 打赏
  • 举报
回复
用SHFileOperation可能比较简单
maskdata 2005-04-01
  • 打赏
  • 举报
回复
这样效率很低的,有没有语法直接像XCOPY那样的,如果目标文件夹不存在就自动创建文件夹之后再拷贝的?
LPan008 2005-03-31
  • 打赏
  • 举报
回复
你可以先用FileSystemObject.FolderExists先判断Folder是否存在,然后执行操作。
cly2004 2005-03-31
  • 打赏
  • 举报
回复
但是你的利用错误捕捉机制并不怎么好

DestStr="C:\AAA\BBB\CCC\1.txt" 不存就会被捕了

fso.CreateFolder(str1) 当str1中如果有一个文件夹存在就会出错了。

pice 2005-03-31
  • 打赏
  • 举报
回复
我想調用API容易一點吧,
pice 2005-03-31
  • 打赏
  • 举报
回复
假设我们想将 c:\temp 目录的所有档案(包含其子目录)复制到 c:\temp2 目录底下, 则程式如下:
 
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)
 
在以上叙述中请注意一件事情:FOF_NOCONFIRMMKDIR 表示不显示交谈窗询问使用者「是否建立目录」,如果取消此一设定值, 而当 SHFileOp.pTo 所指定的目录不存在时, 则 Windows 会询问使用者是否建立目录。(SHFileOp.pTo = "c:\temp2\*.*" 写成 SHFileOp.pTo = "c:\temp2 亦可)
cly2004 2005-03-31
  • 打赏
  • 举报
回复
cly2004 2005-03-31
  • 打赏
  • 举报
回复
Private Sub Command4_Click()
Dim fso As New FileSystemObject
Dim FloderName As String
Dim src As String
Dim de As String
FloderName = "c:\aaa"

src = "d:\aaa\1.txt"

If Not fso.FileExists(FloderName) Then
fso.CreateFolder (FloderName)
End If

de = FloderName

fso.CopyFile src, de, True


End Sub
Gutta 2005-03-31
  • 打赏
  • 举报
回复
利用错误捕捉机制:(为使问题典型化,多级目的目录)
Private SUb Command1_Click()
On Error Goto ErrL
Err.clear
Dim fso As New FileSystemObject
SourceStr= "D:\AAA\1.txt"
DestStr="C:\AAA\BBB\CCC\1.txt"
fso.CopyFile SourceStr, DestStr
eixt sub
ErrL: '错误则表示目录不存在
Dim a() as String,str1 as String
a=split(DestStr,"\")
str1=a(0) & "\"
For i=1 to Ubound(a)-1
str1= str1 & a(i)
fso.CreateFolder(str1)
Next
'以上循环完成了多目录的层叠创建
fso.CopyFile(Sourcestr,DestStr)
End Sub

楼主去试试

7,763

社区成员

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

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