找回密码
 加入
搜索
查看: 2875|回复: 5

[效率算法] 问一个排除目录和文件的问题

  [复制链接]
发表于 2011-10-1 19:26:34 | 显示全部楼层 |阅读模式
我在删除不要的内容,有一个目录里的内容,很多,我只想保留指定的几个目录和文件把其它的都删除掉,怎么才能做到,我现在做的感觉有点笨的方法,先把要保留的目录和文件拷出来,然后删除整个目录,对于文件较少时有用,一多就感觉比较麻烦,不知道有没有什么方法解决
如目录里有一些这样的文件和子目录
总目录,123
下面有目录
a1
a2
a3
33b
33bc
cd3
e33
ff
gg
22
文件
1.txw
2.tew
3.doc
333.ee
bb.mms
55.t66
想保留目录ff  gg
文件bb.mms 55.t66

举了一个例子,文件少时好弄,一多就感觉方法笨了点
搜了一下,没看到有什么好方法
发表于 2011-10-1 20:23:46 | 显示全部楼层
#Include <File.au3>
$aFile = _FileListToArray(, 1)
$aDir =  _FileListToArray(, 2)
for $i = 1 to $aFile[0]
if not($aFile[$i] = '') then filedelete
next
for $i = 1 to $aDir[0]
if not($aDir[$i] = '') then dirremove()
next
发表于 2011-10-1 21:32:18 | 显示全部楼层
我在删除不要的内容,有一个目录里的内容,很多,我只想保留指定的几个目录和文件把其它的都删除掉,怎么才 ...
zlmyongheng 发表于 2011-10-1 19:26


试试下面的,没有测试过


#Include <File.au3>
#include <Array.au3>

Local $aDir, $aFile, $Dir = "d:\123", $aRetDir[2] = ["ff", "gg"], $aRetFile[2] = ["bb.mms", "55.t66"]

$aDir = _FileListToArray($Dir, "*", 2)

If IsArray($aDir) Then
        _ArrayDelete($aDir, 0)
        $aDir = CompareArray($aDir, $aRetDir)
        
        For $i = 0 To UBound($aDir) - 1
                DirRemove($Dir & "\" & $aDir[$i], 1)
        Next
EndIf

$aFile = _FileListToArray($Dir, "*.*", 1)
If IsArray($aFile) Then
        _ArrayDelete($aFile, 0)
        $aFile = CompareArray($aFile, $aRetFile)
        For $i = 0 To UBound($aFile) - 1
                FileDelete($Dir & "\" & $aFile[$i])
        Next
EndIf

        

Func CompareArray($aA, $aB)
        Local $Suffix = 0
        While True        
                If $Suffix > UBound($aA) - 1 Then ExitLoop        
                For $i = 0 To UBound($aB) - 1
                        If $aB[$i] == $aA[$Suffix] Then
                                _ArrayDelete($aA, $Suffix)
                                $Suffix -= 1
                                ExitLoop
                        EndIf
                Next        
                $Suffix += 1
        WEnd
        
        Return $aA
EndFunc



发表于 2011-10-1 21:51:51 | 显示全部楼层
2楼,3楼都能实现,我就不提供代码了,呵呵,我也做过类似的代码
发表于 2011-10-1 21:53:41 | 显示全部楼层
思路就是先遍历出总体,然后用IF判断不是这几个文件就删。一直删到最后!
 楼主| 发表于 2011-10-1 23:17:59 | 显示全部楼层
我也按照这个思路来用if判断的,可时要保留的文件和目录加起来也不少,看来想省事是不行的了,什么时候做成ini文件把保留的都写到里面去了,
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-2 14:23 , Processed in 0.079452 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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