易语言复制文件夹及子文件内文件
.版本 2
.子程序 _复制按钮_被单击
移动目录 (“F:\test”, “D:\test”)
.子程序 移动目录, , 公开
.参数 源目录, 文本型, , 被复制或移动的目录
.参数 终目录, 文本型, , 移动或复制到的目录
.参数 是否覆盖, 逻辑型, 可空, 为空默认为真,强行覆盖,为假则不覆盖
.参数 删除源目录, 逻辑型, 可空, 为空默认为真,删除源目录,为假则不删除
.局部变量 i, 整数型
.局部变量 目录列表定位, 整数型
.局部变量 当前路径, 文本型
.局部变量 目录名称, 文本型
.局部变量 文件名称, 文本型
.局部变量 目录列表, 文本型, , "0"
.局部变量 文件列表, 文本型, , "0"
.局部变量 复制到的文件, 文本型
.局部变量 复制到的子目录, 文本型
.局部变量 临时, 文本型, , "0"
.局部变量 x, 整数型
.局部变量 临时文本, 文本型
.如果真 (是否为空 (是否覆盖) = 真)
是否覆盖 = 真
.如果真结束
.如果真 (是否为空 (删除源目录) = 真)
删除源目录 = 真
.如果真结束
.如果真 (取文本右边 (源目录, 1) ≠ “\”)
源目录 = 源目录 + “\”
.如果真结束
.如果真 (取文本右边 (终目录, 1) ≠ “\”)
终目录 = 终目录 + “\”
.如果真结束
加入成员 (目录列表, 源目录)
创建目录 (终目录)
目录列表定位 = 1
.判断循环首 (目录列表定位 ≤ 取数组成员数 (目录列表))
当前路径 = 目录列表 [目录列表定位]
.如果真 (取文本右边 (当前路径, 1) ≠ “\”)
当前路径 = 当前路径 + “\”
.如果真结束
目录名称 = 寻找文件 (当前路径 + “*.*”, #子目录)
.判断循环首 (目录名称 ≠ “”)
.如果真 (目录名称 ≠ “.” 且 目录名称 ≠ “..”)
加入成员 (目录列表, 当前路径 + 目录名称 + “\”)
.如果真结束
目录名称 = 寻找文件 (, #子目录)
.判断循环尾 ()
目录列表定位 = 目录列表定位 + 1
.判断循环尾 ()
.变量循环首 (1, 取数组成员数 (目录列表), 1, i)
当前路径 = 目录列表 [i]
文件名称 = 寻找文件 (当前路径 + “*.*”, )
.判断循环首 (文件名称 ≠ “”)
加入成员 (文件列表, 当前路径 + 文件名称)
文件名称 = 寻找文件 (, )
.判断循环尾 ()
.变量循环尾 ()
.计次循环首 (取数组成员数 (文件列表), i)
复制到的文件 = 取文本右边 (文件列表 [i], 取文本长度 (文件列表 [i]) - 取文本长度 (源目录))
复制到的子目录 = 取文本左边 (复制到的文件, 倒找文本 (复制到的文件, “\”, 取文本长度 (复制到的文件), 假) - 1)
临时 = 分割文本 (复制到的子目录, “\”, )
临时文本 = “”
.计次循环首 (取数组成员数 (临时), x)
临时文本 = 临时文本 + “\” + 临时 [x]
创建目录 (终目录 + 临时文本)
.计次循环尾 ()
.判断开始 (文件是否存在 (终目录 + 复制到的文件) = 真)
.如果真 (是否覆盖 = 真)
复制文件 (文件列表 [i], 终目录 + 复制到的文件)
.如果真结束
.默认
复制文件 (文件列表 [i], 终目录 + 复制到的文件)
.判断结束
.计次循环尾 ()
.如果真 (删除源目录 = 真)
删除目录 (源目录)
.如果真结束