关于根据文件名长度删除文件夹,请教
本帖最后由 a000000 于 2017-1-1 15:35 编辑开机后软件自动生成这些长文件名的文件夹(里面全是广告),而且名字随机,一般为27-32个字节,请问应该如何批量删除这些长文件名的文件夹啊?
查了很多资料也没有这方面的
多谢大侠
[/#RequireAdmin
#include <file.au3>
$aRr = _FileListToArray(@SystemDir, '', 2)
If Not IsArray($aRr) Then Exit
For $i = 1 To $aRr
If StringLen($aRr[$i]) < 27 Then ContinueLoop
If StringRegExp($aRr[$i], '\w') Then
MsgBox(0, '可疑文件夹', $aRr[$i])
;FileDelete(@SystemDir & '\' & $aRr[$i])
EndIf
Next
code] 不知道为什么,测试后无效 本帖最后由 Alam 于 2017-1-1 18:15 编辑
回复 3# a000000
判断上不对.
#RequireAdmin
#include <file.au3>
$aRr = _FileListToArray('C:\WINDOWS\system32', '', 2)
If Not IsArray($aRr) Then Exit
For $i = 1 To $aRr
If StringLen($aRr[$i]) < 27 Then ContinueLoop
If StringRegExp($aRr[$i], '\W') Then ContinueLoop
MsgBox(0, '可疑文件夹', $aRr[$i])
;FileDelete('C:\WINDOWS\system32\' & $aRr[$i])
Next
本帖最后由 a000000 于 2017-1-1 18:29 编辑
回复 4# Alam
测试后不动作,在C:\WINDOWS\system32建立文件夹名字为:01234567890123456789012345678901
结果压根不提示,msgbox没动作
经测试,不管大于还是小于,均不提示
应该是If Not IsArray($aRr) Then Exit
在这里直接exit了 .......那函数默认参数的设置有点问题,应该算是个'BUG'
这样就可以了.
#RequireAdmin
#include <file.au3>
#include <array.au3>
$aRr = _FileListToArray('C:\WINDOWS\system32', '*', 2)
If Not IsArray($aRr) Then Exit MsgBox(0, @error, '找不着相关文件夹')
_ArrayDisplay($aRr)
For $i = 1 To $aRr
If StringLen($aRr[$i]) < 27 Then ContinueLoop
If StringRegExp($aRr[$i], '\W') Then ContinueLoop
MsgBox(0, '可疑文件夹', $aRr[$i])
;FileDelete('C:\WINDOWS\system32\' & $aRr[$i])
Next ;FileDelete('C:\WINDOWS\system32\' & $aRr[$i])
这句改为FileDelete('C:\WINDOWS\system32\' & $aRr[$i])
不删除,是不是后面的 & $aRr[$i] 也必须在引号内? 回复 7# a000000
抱歉...函数用错了,应该用删除文件夹函数 DirRemove('C:\WINDOWS\system32\' & $aRr[$i], 1) 不错帮你顶 回复 8# Alam
多谢大侠,已经完美解决,再次感谢 这个源码会用到要好好学一下!
页:
[1]