问一个排除目录和文件的问题
我在删除不要的内容,有一个目录里的内容,很多,我只想保留指定的几个目录和文件把其它的都删除掉,怎么才能做到,我现在做的感觉有点笨的方法,先把要保留的目录和文件拷出来,然后删除整个目录,对于文件较少时有用,一多就感觉比较麻烦,不知道有没有什么方法解决如目录里有一些这样的文件和子目录
总目录,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
举了一个例子,文件少时好弄,一多就感觉方法笨了点
搜了一下,没看到有什么好方法 #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 我在删除不要的内容,有一个目录里的内容,很多,我只想保留指定的几个目录和文件把其它的都删除掉,怎么才 ...
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
2楼,3楼都能实现,我就不提供代码了,呵呵,我也做过类似的代码 思路就是先遍历出总体,然后用IF判断不是这几个文件就删。一直删到最后! 我也按照这个思路来用if判断的,可时要保留的文件和目录加起来也不少,看来想省事是不行的了,什么时候做成ini文件把保留的都写到里面去了,
页:
[1]