找回密码
 加入
搜索
查看: 65|回复: 7

[AU3基础] [已解决]求助一个文件复制进度条,百分比没走完就复制完毕了

[复制链接]
发表于 3 天前 | 显示全部楼层 |阅读模式
本帖最后由 令狐大虾 于 2025-5-21 12:39 编辑
#include <File.au3>
#include <Process.au3>

_DirCopyWithProgress("E:\SoftWareFiles", "C:\SoftWareFiles")
Func _DirCopyWithProgress($sSource, $sDest)
    ;验证源目录有效性
    If Not FileExists($sSource) Then Return SetError(1, 0, "源路径无效")
    ;获取文件总数
    Local $aFileList = _FileListToArrayRec($sSource, "*", 1, 1, 0, 2)
    If @error Then Return SetError(2, 0, "文件列表获取失败")
    ;创建目标目录结构
    If Not DirCreate($sDest) Then Return SetError(3, 0, "目标目录创建失败")
    ;初始化进度条
    ProgressOn("复制相关调用文件到C盘", "", "0%", -1, 0, 18)
    Local $iTotal = $aFileList[0]
    Local $iCopied = 0
    ;遍历复制文件
    For $i = 1 To $iTotal
        Local $sTarget = StringReplace($aFileList[$i], $sSource, $sDest)
                FileCopy($aFileList[$i], $sTarget, 1)
                $iCopied += 1
                ProgressSet(($iCopied/$iTotal)*100, Round(($iCopied/$iTotal)*100) & "%")
    Next
    ProgressOff()
    Return $iCopied & " 个文件复制完成"
EndFunc

发表于 3 天前 | 显示全部楼层
在FileCopy之前加上这两行:

Local $sDestDir = StringRegExpReplace($sTarget,'(?m)\\[^\\]+?$','') 
If Not FileExists($sDestDir) Then DirCreate($sDestDir)

发表于 3 天前 | 显示全部楼层
haijie1223 发表于 2025-5-21 09:45
在FileCopy之前加上这两行:

正则太厉害了,单个文件怎么操作?
 楼主| 发表于 3 天前 | 显示全部楼层
haijie1223 发表于 2025-5-21 09:45
在FileCopy之前加上这两行:

谢谢啊谢谢
发表于 前天 18:54 | 显示全部楼层
不需要先 DirCreate 创建文件夹, FileCopy($aFileList[$i], $sTarget, 1) 参3加8就行了,即 FileCopy($aFileList[$i], $sTarget, 1 + 8)
 楼主| 发表于 昨天 01:23 | 显示全部楼层
afan 发表于 2025-5-22 18:54
不需要先 DirCreate 创建文件夹, FileCopy($aFileList[$i], $sTarget, 1) 参3加8就行了,即 FileCopy($aFi ...

谢谢a版,海杰添加的两行代码也有创建文件夹的啊。看来也可以精简一行啦
发表于 昨天 11:57 | 显示全部楼层
令狐大虾 发表于 2025-5-23 01:23
谢谢a版,海杰添加的两行代码也有创建文件夹的啊。看来也可以精简一行啦 ...

不需要先创建文件夹。就是整个代码不需要 DirCreate
发表于 昨天 12:05 | 显示全部楼层
令狐大虾 发表于 2025-5-23 01:23
谢谢a版,海杰添加的两行代码也有创建文件夹的啊。看来也可以精简一行啦 ...

FileCopy 第3个参数可以自动创建目录。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2025-5-24 17:16 , Processed in 0.085431 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表