比如一共有100个,每次拷贝完一个文件夹,增加1,直到100.
这样的方式,对应的是通过把ProgressBarStyle,设置为Blocks,
然后每拷贝完一个文件夹,去调用回调函数,增加1,即可。
相关的类似的代码,可以参考我的:
【未解决】C#中添加始终滚动的进度条(跑马灯)和一格一格前进的滚动条(块)
和
【已解决】给C#程序添加滚动进度条(ProgressBar),实现滚动/动态更新
然后照葫芦画瓢,就可以实现自己的了。
其中,可以去网上搜一下ProgressBarStyle,可以找到更多的微软的官方的解释的。
这里不给贴地址,你自己去google中搜吧。
(此处不给贴地址,请自行去google中搜上述标题,即可找到相关帖子的地址)
获取文件总的大小定时获取已复制文件的大小
得到百分比,显示成进度
FileStream fs
...
//获取fs的长度
long maxLength = fs.Length
异步调用fs,
fs.BeginWrite(..)
//声明一个全局累加的long
//在CallBack函数中每次累加,同时使用delegate响应主界面线程
如下是一个将c:\windows复制到该批处理所在目录并显示进度的批处理例子,你可以根据你的需要来修改。你想显示百分比的话还是比较麻烦的,这个取决于文件大小而不是文件多少,文件大小在批处理下显示不出百分比的,但是文件个数却是可以的。@echo off
setlocal enabledelayedexpansion
set b=/-\ /-\ **
set 速度=1
set 退格=
set n=0
for %%i in (%SystemRoot%\*.*) do (call :a !n!&copy %%i>nul 2>nul&set /a n+=1)
goto :eof
:a
set/a a=%1%%10
set/a c=%a%%%4
if %a% EQU 0 set/p=▌<nul
if %c% EQU 3 (set/p=^|<nul) else (set/p=!b:~%a%,1!<nul)
ping/n %速度% 127.1>nul
set/p=%退格%<nul
goto :eof
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)