找回密码
 加入
搜索
查看: 16|回复: 3

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

[复制链接]
发表于 13 小时前 | 显示全部楼层 |阅读模式
本帖最后由 令狐大虾 于 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

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

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

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

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

谢谢啊谢谢
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2025-5-21 15:17 , Processed in 0.082498 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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