hxwb518 发表于 2010-9-24 13:10:25

[已解决]au3如何做到排除文件及文件夹删除排除外的东西!

本帖最后由 hxwb518 于 2010-9-25 12:33 编辑

au3如何做到排除文件及文件夹删除排除外的东西!

如:D:\

1.   文件夹有    123      456      单机游戏      聊天工具   陪 睡   0 1    ------ 陪 睡   0 1    中间有空格

2.   文件有    网络.txt       sp3.gho   神女.txt      王八蛋_的资料.doc

    ------   神女.txt      王八蛋_的资料.doc    中间有空格和_
D盘除了以上文件还有其他的多余文件及文件夹。

如:不知道      在一起    wei.txt    wangba.bat   

除了1 和2之外的所有东西全部删除!   如何实现 期待!

风行者 发表于 2010-9-24 14:02:35

本帖最后由 风行者 于 2010-9-24 15:42 编辑

未经测试,慎用
#include <File.au3>
#include <Array.au3>
Dim $File = ["123", "456", "单机游戏", "聊天工具", "陪 睡", "0 1", "网络.txt", "sp3.gho", "神女.txt", "王八蛋_的资料.doc"]
$FileArray = _FileListToArray("d:\")
For $i = 1 To $FileArray
        $Index = _ArraySearch($File, $FileArray[$i])
        If @error = 6 Then
                $Attrib = FileGetAttrib("d:\" & $FileArray[$i])
                FileSetAttrib("d:\" & $FileArray[$i],"-"&$Attrib)
                If StringInStr($Attrib, "D") Then
                        DirRemove("d:\" & $FileArray[$i], 1)
                Else
                        FileDelete("d:\" & $FileArray[$i])
                EndIf
        EndIf
Next

hxwb518 发表于 2010-9-24 14:07:06

回复 2# 风行者


    --------------------------------------------------------------------------

                谢谢风行者,先测试先!{:face (356):}

hxwb518 发表于 2010-9-24 14:14:21

             --------------------------------------------------------------

    测试过了可以用,能不能 自定 设置排除的文件及文件夹呢?

            $File            请问是什么意思!{:face (427):}

pusofalse 发表于 2010-9-24 14:21:16

#include <File.au3>

Local $sRandom1 = Random(), $sRandom2 = Random(), $sExclude

Local $sRoot, $aFile = ["123", "456", "sp3.gho", "0 1"]

For $i = 0 To UBound($aFile) - 1
        $sExclude &= $sRandom1 & $aFile[$i] & $sRandom2
Next

$sRoot = "d:\"

$aFileList = _FileListToArray($sRoot)
For $i = 1 To $aFileList
        If StringInStr($sExclude, $sRandom1 & $aFileList[$i] & $sRandom2) Then
                ContinueLoop
        EndIf

        If StingInStr(FileGetAttrib($sRoot & $aFileList[$i]), "D") Then
                DirRemove($sRoot & $aFileList[$i])
        Else
                FileDelete($sRoot & $aFileList[$i])
        EndIf
Next

hxwb518 发表于 2010-9-24 14:24:22

{:face (356):}感谢楼主,无私的精神,值得我们学习!

pei 发表于 2010-9-24 15:05:07

还不错的样子~学习语法了~
感谢分享!!

hxwb518 发表于 2010-9-24 17:04:44

未经测试,慎用
风行者 发表于 2010-9-24 14:02 http://www.autoitx.com/images/common/back.gif


    ---------------------------------------------------------------------------------------------------

   这个文件必须放在指定的盘符才可以运行。 有时也是不执行文件删除功能!

能不能有个读取配置文件的,执行文件可以放在任意位置。这样更灵活一些!

hxwb518 发表于 2010-9-24 17:36:50

#include <File.au3>
#include <Array.au3>
Dim $File = ["A&A", "RECYCLER", "System Volume Information", "GTA Vice City User Files", "GTA3 User Files","Koei","My Games","My Music","My QQ Files","NBA LIVE 06","NBMSClient","NFS Most Wanted","tool","yt560.GHO","休闲游戏","单机游戏","对战平台","影音软件","我接收到的文件","我的视频","棋牌游戏","游戏外挂","系统安装","系统更新","网络游戏","网页游戏","聊天工具","通用工具","金融证券","del.au3"]
$FileArray = _FileListToArray("e:\")
For $i = 1 To $FileArray
      $Index = _ArraySearch($File, $FileArray[$i])
      If @error = 6 Then
                $Attrib = FileGetAttrib("e:\" & $FileArray[$i])
                FileSetAttrib("e:\" & $FileArray[$i],"-"&$Attrib)
                If StringInStr($Attrib, "e") Then
                        DirRemove("e:\" & $FileArray[$i], 1)
                Else
                        FileDelete("e:\" & $FileArray[$i])
                EndIf                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       EndIf
        Next
       






------------------------------------------------------------------------------------------------------------------------------------------


在C盘执行, 应该是排除E盘的文件。把我C盘所有的文件都删除了!{:face (229):}

而E盘文件夹排除之外的也没有删除。文件排除在内的也一样删除 文件本身!

风行者 发表于 2010-9-24 17:49:10

也是未经测试,慎用

#include <File.au3>
#include <Array.au3>
Dim $File = IniReadSection("FileDel.ini","file")
Dim $Drive = IniRead("FileDel.ini","drive","lab","")
$FileArray = _FileListToArray($Drive)
For $i = 1 To $FileArray
      $Index = _ArraySearch($File, $FileArray[$i])
      If @error = 6 Then
                $Attrib = FileGetAttrib($Drive & $FileArray[$i])
                FileSetAttrib($Drive & $FileArray[$i],"-R",1)
                If StringInStr($Attrib, "D") Then
                        DirRemove($Drive & $FileArray[$i], 1)
                Else
                        FileDelete($Drive & $FileArray[$i])
                EndIf
      EndIf
Next

FileDel.ini 配置文件

lab=d:\


F1=123
F2=456
F3=单机游戏

....后面自己添加

afan 发表于 2010-9-24 21:32:26

感谢楼主,无私的精神,值得我们学习!
hxwb518 发表于 2010-9-24 14:24 http://www.autoitx.com/images/common/back.gif


    晕,你自己就是楼主…
另外,建议多看看P版的代码,效率会更高些~

hxwb518 发表于 2010-9-25 12:11:09

回复 11# afan


    嘿嘿,你好,请问什么是P版~! {:face (356):}

afan 发表于 2010-9-25 12:29:05

回复 12# hxwb518


    5楼 pusofalse 超级版主 —— 论坛里的大神,他的帖子含金量极高,别的我就不多说了~
页: [1]
查看完整版本: [已解决]au3如何做到排除文件及文件夹删除排除外的东西!