vb 复制文件夹进度问题
小弟才入VB急需拷贝文件进度条来监控完成情况已经连续奋斗搜遍网上5天了也没一个正经的回答按照一个网友的思路pbar是进度条max是最大值,即显示复制完成时的值,设计时在属...
小弟才入VB 急需拷贝文件进度条来监控完成情况 已经连续奋斗搜遍网上5天了 也没一个正经的回答 按照一个网友的思路
pbar是进度条
max是最大值,即显示复制完成时的值,设计时在属性窗口设为100
fcount代表文件夹总数
for i= 1 to fcount
'复制文件第 i 个文件
pbar.value=i/fcount * pbar.max
next i
我把文件夹的文件数换成了文件夹的大小 但是测试之后 发现卡死 因为200多MB的文件 就要循环无数次
rivate Sub Command11_Click()
Dim fso1 As New FileSystemObject
Dim folder1 As Folder
Set folder1 = fso1.GetFolder("c:\b")
MsgBox folder1.Size & "Bytes"
Dim name As String
Dim router As String
name = Text9.Text '把text文本的内容赋值给name
router = "D:\" & name '注:"D:\"这个换成自己想要建立文件夹的路径
If Dir(router, vbDirectory) = "" Then '‘判断是否已经存在同名的文件夹,为空值则新建
MkDir router
Else
MsgBox "D盘已经存在以" & name & "命名的文件夹!"
End If
Dim TaskID As Long ' Task-ID des DOS-Fensters
Dim ProcID As Long ' Prozess-ID des DOS-Fensters
Timer1.Enabled = True
TaskID = Shell("xcopyc:\b D:\备份 /e /y", vbHide)
DoEvents
ProcID = OpenProcess(SYNCHRONIZE, False, TaskID)
Call WaitForSingleObject(ProcID, INFINITE)
Timer1.Enabled = False
For i = 1 To folder1.Size
ProgressBar1.Value = i / folder1.Size * 100000
Next i
MsgBox "老区备份成功,备份在D盘备份文件夹下!"
End Sub
我把pbar.max直接用数字代替之后 读条快了 但是不准确了并且是超出MAX值 是报错的 我求高手发一个菜鸟级的 一步一步知道都加到哪的代码 劳心了 把别人教会相信你自己也有成就感的 另外我说一下TImer1 我任何属性都是默认的 没添加任何代码
有高手的QQ留下也好 谢谢了 展开
pbar是进度条
max是最大值,即显示复制完成时的值,设计时在属性窗口设为100
fcount代表文件夹总数
for i= 1 to fcount
'复制文件第 i 个文件
pbar.value=i/fcount * pbar.max
next i
我把文件夹的文件数换成了文件夹的大小 但是测试之后 发现卡死 因为200多MB的文件 就要循环无数次
rivate Sub Command11_Click()
Dim fso1 As New FileSystemObject
Dim folder1 As Folder
Set folder1 = fso1.GetFolder("c:\b")
MsgBox folder1.Size & "Bytes"
Dim name As String
Dim router As String
name = Text9.Text '把text文本的内容赋值给name
router = "D:\" & name '注:"D:\"这个换成自己想要建立文件夹的路径
If Dir(router, vbDirectory) = "" Then '‘判断是否已经存在同名的文件夹,为空值则新建
MkDir router
Else
MsgBox "D盘已经存在以" & name & "命名的文件夹!"
End If
Dim TaskID As Long ' Task-ID des DOS-Fensters
Dim ProcID As Long ' Prozess-ID des DOS-Fensters
Timer1.Enabled = True
TaskID = Shell("xcopyc:\b D:\备份 /e /y", vbHide)
DoEvents
ProcID = OpenProcess(SYNCHRONIZE, False, TaskID)
Call WaitForSingleObject(ProcID, INFINITE)
Timer1.Enabled = False
For i = 1 To folder1.Size
ProgressBar1.Value = i / folder1.Size * 100000
Next i
MsgBox "老区备份成功,备份在D盘备份文件夹下!"
End Sub
我把pbar.max直接用数字代替之后 读条快了 但是不准确了并且是超出MAX值 是报错的 我求高手发一个菜鸟级的 一步一步知道都加到哪的代码 劳心了 把别人教会相信你自己也有成就感的 另外我说一下TImer1 我任何属性都是默认的 没添加任何代码
有高手的QQ留下也好 谢谢了 展开
3个回答
展开全部
你看下《老兵新传:Visual Basic核心编程及通用模块开发》应该是第十一章,也有现成源代码,利用书中介绍的现成函数,一条语句搞定!如可以这样调用复制文件(自动弹出进度窗口):
FMCopyFiles(源文件或文件夹数组,"F:\dest")
其中源文件或文件夹数组为一个string数组,里面放上所有要复制的文件的文件名或文件夹名,也可以既有文件名也有文件夹名。其中FMCopyFiles函数不用你管,把模块直接添加到工程即可。对进度窗口也有控制,这时就多给几个参数:
FMCopyFiles(源文件或文件夹数组,"F:\dest", Fasle) '不显示进度窗口复制
FMCopyFiles(源文件或文件夹数组,"F:\dest", True, True, False) '显示进度窗口复制,出错不提示
可以这样调用移动文件(自动弹出进度窗口):
FMMoveFiles(源文件或文件夹数组,"F:\dest")
可以这样调用删除文件(自动弹出进度窗口):
FMDeleFiles(源文件或文件夹数组)
不放入回收站删除:FMDeleFiles(源文件或文件夹数组,False)
不显示确认对话框:FMDeleFiles(源文件或文件夹数组,False, True, False)
还有用这种方式做的软件是绿色软件(因为是调用API函数实现的),什么OS对象,都不用加载,你编译后的程序不用安装,就一个exe,拷贝到任何机器上直接运行!本书就是这个目的的。
FMCopyFiles(源文件或文件夹数组,"F:\dest")
其中源文件或文件夹数组为一个string数组,里面放上所有要复制的文件的文件名或文件夹名,也可以既有文件名也有文件夹名。其中FMCopyFiles函数不用你管,把模块直接添加到工程即可。对进度窗口也有控制,这时就多给几个参数:
FMCopyFiles(源文件或文件夹数组,"F:\dest", Fasle) '不显示进度窗口复制
FMCopyFiles(源文件或文件夹数组,"F:\dest", True, True, False) '显示进度窗口复制,出错不提示
可以这样调用移动文件(自动弹出进度窗口):
FMMoveFiles(源文件或文件夹数组,"F:\dest")
可以这样调用删除文件(自动弹出进度窗口):
FMDeleFiles(源文件或文件夹数组)
不放入回收站删除:FMDeleFiles(源文件或文件夹数组,False)
不显示确认对话框:FMDeleFiles(源文件或文件夹数组,False, True, False)
还有用这种方式做的软件是绿色软件(因为是调用API函数实现的),什么OS对象,都不用加载,你编译后的程序不用安装,就一个exe,拷贝到任何机器上直接运行!本书就是这个目的的。
展开全部
1、你已经用了FilesystemObject了就用这个对象的文件夹和文件对象先计算文件大小以及个数、
2、然后把进度条的Max设置上。
3、然后通过文件对象的复制命令(你用了Shell调用方式)一个一个复制、
4、当然目的文件夹不存在时、还需要自己使用文件夹对象创建需要的文件夹。
2、然后把进度条的Max设置上。
3、然后通过文件对象的复制命令(你用了Shell调用方式)一个一个复制、
4、当然目的文件夹不存在时、还需要自己使用文件夹对象创建需要的文件夹。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
来,我来帮你
620941
620941
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询