|
本帖最后由 恶魔中的死神 于 2011-11-8 08:56 编辑
[e]
.版本 2
.支持库 shell
.支持库 EThread
.程序集 窗口程序集1
.程序集变量 目录数组, 文本型, , "0"
.程序集变量 文件数组, 文本型, , "0"
.程序集变量 线程句柄, 整数型
.子程序 _按钮1_被单击
.局部变量 path, 文本型
path = 浏览文件夹 (“请选择原目录:”, )
.如果真 (path ≠ 取空白文本 (0))
编辑框1.内容 = path
.如果真结束
.子程序 _按钮2_被单击
.局部变量 path, 文本型
path = 浏览文件夹 (“请选择新目录:”, )
.如果真 (path ≠ 取空白文本 (0))
编辑框2.内容 = path
.如果真结束
.子程序 _按钮3_被单击
清除数组 (目录数组)
清除数组 (文件数组)
按钮3.禁止 = 真
启动线程 (&线程_进度显示, , 线程句柄)
.子程序 线程_进度显示
.局部变量 计次, 整数型
.局部变量 dir, 文本型
.局部变量 计次一, 整数型
.局部变量 path, 文本型
.局部变量 swit, 逻辑型
.局部变量 num, 整数型
标签3.标题 = “正在统计所有文件/文件夹...”
子程序_核心搜索 (编辑框1.内容)
标签3.标题 = “正在创建所需文件夹...”
进度条1.位置 = 0
进度条1.最大位置 = 取数组成员数 (目录数组)
.计次循环首 (取数组成员数 (目录数组), 计次)
dir = 子文本替换 (目录数组 [计次], 编辑框1.内容, 编辑框2.内容, , 1, 真)
创建目录 (dir)
进度条1.位置 = 进度条1.位置 + 1
.计次循环尾 ()
标签3.标题 = “文件复制中...”
进度条1.位置 = 0
进度条1.最大位置 = 取数组成员数 (文件数组)
.计次循环首 (取数组成员数 (文件数组), 计次一)
path = 子文本替换 (文件数组 [计次一], 编辑框1.内容, 编辑框2.内容, , 1, 真)
swit = CopyFileExA (文件数组 [计次一], path, &CopyProgressRoutine, 0, 0, #COPY_FILE_RESTARTABLE)
.如果真 (swit = 假)
num = num + 1
.如果真结束
进度条1.位置 = 进度条1.位置 + 1
.计次循环尾 ()
标签3.标题 = “报告老大已经全部搞定... 失败:” + 到文本 (num) + “个”
按钮3.禁止 = 假
.子程序 CopyProgressRoutine, 整数型
.参数 TotalFileSize, 双精度小数型
.参数 TotalBytesTransferred, 双精度小数型
.参数 StreamSize, 双精度小数型
.参数 StreamBytesTransferred, 双精度小数型
.参数 dwStreamNumber
.参数 dwCallbackReason
.参数 hSourceFile
.参数 hDestinationFile
.参数 lpData
进度条2.位置 = 取整 (TotalBytesTransferred × 10000 ÷ (TotalFileSize × 10000) × 100)
返回 (#PROGRESS_CONTINUE)
.子程序 子程序_核心搜索
.参数 目标目录, 文本型
.局部变量 文件名, 文本型
文件名 = 寻找文件 (目标目录 + “\*.*”, #子目录)
.判断循环首 (文件名 ≠ “”)
.如果真 (文件名 ≠ “.” 且 文件名 ≠ “..”)
加入成员 (目录数组, 目标目录 + “\” + 文件名)
子程序_核心搜索 (目标目录 + “\” + 文件名)
.如果真结束
文件名 = 寻找文件 (, #子目录)
.判断循环尾 ()
文件名 = 寻找文件 (目标目录 + “\*.*”, )
.判断循环首 (文件名 ≠ “”)
加入成员 (文件数组, 目标目录 + “\” + 文件名)
文件名 = 寻找文件 (, )
.判断循环尾 ()
.子程序 __启动窗口_可否被关闭, 逻辑型
.如果真 (按钮3.禁止)
.如果真 (信息框 (“正在复制文件中,是否强制关闭?”, 4 + 48, ) = 6)
返回 (假)
.如果真结束
强制结束线程 (线程句柄)
.如果真结束
[/e]
|
|