关于删除文件与目录的删除提示!请教【已解决】
本帖最后由 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+$phone_arr
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
提问的代码应极简且可运行,并具通用性
Local $temp_arr =
Local $phone_arr =
Local $i = 1, $max = $temp_arr
If $phone_arr > $max Then $max = $phone_arr
Do
ConsoleWrite($i & @CRLF)
If $i <= $temp_arr Then
ConsoleWrite('操作 $temp_arr[' & $i & '] 的具体代码' & @CRLF)
EndIf
If $i <= $phone_arr Then
ConsoleWrite('操作 $phone_arr[' & $i & '] 的具体代码' & @CRLF)
EndIf
$i += 1
Until $i = $max + 1 afan 发表于 2025-2-18 14:17
提问的代码应极简且可运行,并具通用性
确实A大,你的代码非常的简,我没有想到,把TEMP与PHONE两个数组的总数比较一下,然后循环用最大哪个, afan 发表于 2025-2-18 14:17
提问的代码应极简且可运行,并具通用性
就是使用发现,如果170万个文件,要删除的话,发现实在是太慢了,这样一个一个删除的,好像不如DEL来的快,呵呵 ttmv2019sx 发表于 2025-2-19 15:02
就是使用发现,如果170万个文件,要删除的话,发现实在是太慢了,这样一个一个删除的,好像不如DEL来的快 ...
只帮你看了1#的错误提示相关问题,至于删除,你这是删除全部文件,用得着先_FileListToArray列出清单再一个个删吗。。。 直接删了文件夹不就行了。
(170万个文件,这么大体量的文件数,不应该手动确认删除吗?而且也更简单直接吧,为啥还写程序去干事) afan 发表于 2025-2-19 18:05
只帮你看了1#的错误提示相关问题,至于删除,你这是删除全部文件,用得着先_FileListToArray列出清单再一 ...
删除的是临时文件,与软件产生的一些日志文件,只要超过5个月以上,临时文件,就会产生50万以上的,因为工作上他们操作的东西太多,而临时文件temp是系统目录,是无法直接删除目录的,还有日志文件,是垃圾文件,软件使用的时候自动产生的,所以不用看是不是重要文件,都是直接删除的, afan 发表于 2025-2-19 18:05
只帮你看了1#的错误提示相关问题,至于删除,你这是删除全部文件,用得着先_FileListToArray列出清单再一 ...
现在想到是用DOS命令来DEL删除,这个速度很快,,进程产生CMD,判断文件夹的容量来判断是不是删除速度与进度条,判断CMD进程不见了来确定DEL删除完成,但是如果在运行中,由于用户使用了另外的程序批处理又产生了一个CMD,哪一样的CMD就不太好判断了,如果是我们的程序选动行,是否可以用句柄来判断定位,但是如果是已经运行了批处理cmd的情况下,我们再运行cmd,哪就需要先判断原来的cmd的句柄,排除外,再查看有几个cmd,然后再判断自个的这个cmd的句柄来排除,这个 不太方便,A大有什么好的办法可以推荐吗, 本帖最后由 afan 于 2025-3-5 12:50 编辑
ttmv2019sx 发表于 2025-3-5 09:26
现在想到是用DOS命令来DEL删除,这个速度很快,,进程产生CMD,判断文件夹的容量来判断是不是删除速度与 ...
run() 返回的pid就可以用于判断了。
或者直接 RunWait() 也就不需要判断了
页:
[1]