找回密码
 加入
搜索
查看: 3241|回复: 10

[效率算法] 关于根据文件名长度删除文件夹,请教

  [复制链接]
发表于 2017-1-1 15:18:23 | 显示全部楼层 |阅读模式
本帖最后由 a000000 于 2017-1-1 15:35 编辑

开机后软件自动生成这些长文件名的文件夹(里面全是广告),而且名字随机,一般为27-32个字节,请问应该如何批量删除这些长文件名的文件夹啊?
查了很多资料也没有这方面的
多谢大侠

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2017-1-1 16:53:28 | 显示全部楼层
[code][/#RequireAdmin
#include <file.au3>
$aRr = _FileListToArray(@SystemDir, '', 2)
If Not IsArray($aRr) Then Exit
For $i = 1 To $aRr[0]
        If StringLen($aRr[$i]) < 27 Then ContinueLoop
        If StringRegExp($aRr[$i], '\w') Then
                MsgBox(0, '可疑文件夹', $aRr[$i])
                ;FileDelete(@SystemDir & '\' & $aRr[$i])
        EndIf
Next
code]
 楼主| 发表于 2017-1-1 17:30:31 | 显示全部楼层
不知道为什么,测试后无效
发表于 2017-1-1 18:13:25 | 显示全部楼层
本帖最后由 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[0]
        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

评分

参与人数 1金钱 +10 收起 理由
heroxianf + 10 学习!

查看全部评分

 楼主| 发表于 2017-1-1 18:25:34 | 显示全部楼层
本帖最后由 a000000 于 2017-1-1 18:29 编辑

回复 4# Alam


    测试后不动作,在C:\WINDOWS\system32建立文件夹名字为:01234567890123456789012345678901

结果压根不提示,msgbox没动作


经测试,不管大于还是小于,均不提示

应该是If Not IsArray($aRr) Then Exit

在这里直接exit了
发表于 2017-1-1 18:32:11 | 显示全部楼层
.......那函数默认参数的设置有点问题,应该算是个'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[0]
        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
 楼主| 发表于 2017-1-1 18:43:00 | 显示全部楼层
;FileDelete('C:\WINDOWS\system32\' & $aRr[$i])

这句改为FileDelete('C:\WINDOWS\system32\' & $aRr[$i])

不删除,是不是后面的 & $aRr[$i] 也必须在引号内?
发表于 2017-1-1 19:13:17 | 显示全部楼层
回复 7# a000000

抱歉...函数用错了,应该用删除文件夹函数
 DirRemove('C:\WINDOWS\system32\' & $aRr[$i], 1)
发表于 2017-1-1 19:26:54 | 显示全部楼层
不错帮你顶
 楼主| 发表于 2017-1-2 07:23:00 | 显示全部楼层
回复 8# Alam


    多谢大侠,已经完美解决,再次感谢
发表于 2017-1-2 13:28:35 | 显示全部楼层
这个源码会用到要好好学一下!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-23 16:19 , Processed in 0.088718 second(s), 29 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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