zlmyongheng 发表于 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
想保留目录ffgg
文件bb.mms 55.t66

举了一个例子,文件少时好弄,一多就感觉方法笨了点
搜了一下,没看到有什么好方法

netegg 发表于 2011-10-1 20:23:46

#Include <File.au3>
$aFile = _FileListToArray(, 1)
$aDir =_FileListToArray(, 2)
for $i = 1 to $aFile
if not($aFile[$i] = '') then filedelete
next
for $i = 1 to $aDir
if not($aDir[$i] = '') then dirremove()
next

happytc 发表于 2011-10-1 21:32:18

我在删除不要的内容,有一个目录里的内容,很多,我只想保留指定的几个目录和文件把其它的都删除掉,怎么才 ...
zlmyongheng 发表于 2011-10-1 19:26 http://www.autoitx.com/images/common/back.gif

试试下面的,没有测试过


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

Local $aDir, $aFile, $Dir = "d:\123", $aRetDir = ["ff", "gg"], $aRetFile = ["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



xms77 发表于 2011-10-1 21:51:51

2楼,3楼都能实现,我就不提供代码了,呵呵,我也做过类似的代码

gzh888666 发表于 2011-10-1 21:53:41

思路就是先遍历出总体,然后用IF判断不是这几个文件就删。一直删到最后!

zlmyongheng 发表于 2011-10-1 23:17:59

我也按照这个思路来用if判断的,可时要保留的文件和目录加起来也不少,看来想省事是不行的了,什么时候做成ini文件把保留的都写到里面去了,
页: [1]
查看完整版本: 问一个排除目录和文件的问题