找回密码
 加入
搜索
查看: 80|回复: 4

[AU3基础] 关于删除文件与目录的删除提示!请教【已解决】

[复制链接]
发表于 3 天前 | 显示全部楼层 |阅读模式
本帖最后由 ttmv2019sx 于 2025-2-19 15:03 编辑

        Local $i = 0
                $temp_arr = _FileListToArray($temp, '*', $FLTA_FILESFOLDERS)
                $phone_arr = _FileListToArray($phone, '*', $FLTA_FILESFOLDERS)
                ProgressOn('正在清理...', '', '', -1, -1)
                Do
                        If StringInStr(FileGetAttrib($temp &'\'& $temp_arr[$i + 1]), 'D') Then

                                DirRemove($temp &'\'& $temp_arr[$i + 1], 1)
                        Else
                                FileDelete($temp &'\'& $temp_arr[$i + 1])
                        EndIf

                        If StringInStr(FileGetAttrib($phone &'\'& $phone_arr[$i + 1]), 'D') Then

                                DirRemove($phone &'\'&$phone_arr[$i + 1], 1)
                        Else
                                FileDelete($phone &'\'& $phone_arr[$i + 1])
                        EndIf

$temp_new = Round(DirGetSize($temp) / 1024 / 1024)
$phone_new = Round(DirGetSize($phone) / 1024 / 1024)
$Progress = ($temp_new+$phone_new) / ($temp_old+$phone_old) * 100


                        Sleep(200)
                        ProgressSet(100 - $Progress)
                        $i = $i + 1
                Until $i = $temp_arr[0]+$phone_arr[0]
        Else
                Exit
        EndIf


请问一下,删除$temp路径目录或是$phone路径目录中的文件与目录,如果$temp其中文件与目录被删除完了,另一个$phone路径目录下还有文件与目录,程序就会中止,因为获取数组$temp中为空了,有什么判断可以跳过继续执行$phone路径目录下的文件与目录的删除操作吗,反之也是这个要求,或者是这个代码是否可以优化一下,麻烦各路大神看一下,谢谢,A版请帮助查看一下,谢谢



错误提示:If StringInStr(FileGetAttrib($temp &'\'& $temp_arr[$i + 1]), 'D') Then
If StringInStr(FileGetAttrib($temp &'\'& ^ ERROR

发表于 3 天前 | 显示全部楼层
提问的代码应极简且可运行,并具通用性
Local $temp_arr[10] = [9]
Local $phone_arr[6] = [5]

Local $i = 1, $max = $temp_arr[0]
If $phone_arr[0] > $max Then $max = $phone_arr[0]
Do
        ConsoleWrite($i & @CRLF)
        If $i <= $temp_arr[0] Then
                ConsoleWrite('操作 $temp_arr[' & $i & '] 的具体代码' & @CRLF)
        EndIf
        If $i <= $phone_arr[0] Then
                ConsoleWrite('操作 $phone_arr[' & $i & '] 的具体代码' & @CRLF)
        EndIf
        $i += 1
Until $i = $max + 1
 楼主| 发表于 3 天前 | 显示全部楼层
afan 发表于 2025-2-18 14:17
提问的代码应极简且可运行,并具通用性

确实A大,你的代码非常的简,我没有想到,把TEMP与PHONE两个数组的总数比较一下,然后循环用最大哪个,
 楼主| 发表于 前天 15:02 | 显示全部楼层
afan 发表于 2025-2-18 14:17
提问的代码应极简且可运行,并具通用性

就是使用发现,如果170万个文件,要删除的话,发现实在是太慢了,这样一个一个删除的,好像不如DEL来的快,呵呵
发表于 前天 18:05 | 显示全部楼层
ttmv2019sx 发表于 2025-2-19 15:02
就是使用发现,如果170万个文件,要删除的话,发现实在是太慢了,这样一个一个删除的,好像不如DEL来的快 ...

只帮你看了1#的错误提示相关问题,至于删除,你这是删除全部文件,用得着先_FileListToArray列出清单再一个个删吗。。。 直接删了文件夹不就行了。
(170万个文件,这么大体量的文件数,不应该手动确认删除吗?而且也更简单直接吧,为啥还写程序去干事)
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2025-2-21 20:24 , Processed in 0.074350 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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