找回密码
 加入
搜索
查看: 5682|回复: 12

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

  [复制链接]
发表于 2010-9-24 13:10:25 | 显示全部楼层 |阅读模式
本帖最后由 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之外的所有东西全部删除!   如何实现 期待!

评分

参与人数 1金钱 +10 收起 理由
afan + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 2010-9-24 14:02:35 | 显示全部楼层
本帖最后由 风行者 于 2010-9-24 15:42 编辑

未经测试,慎用
#include <File.au3>
#include <Array.au3>
Dim $File[11] = ["123", "456", "单机游戏", "聊天工具", "陪 睡", "0 1", "网络.txt", "sp3.gho", "神  女.txt", "王八蛋_的资料.doc"]
$FileArray = _FileListToArray("d:\")
For $i = 1 To $FileArray[0]
        $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

评分

参与人数 1金钱 +20 收起 理由
afan + 20

查看全部评分

 楼主| 发表于 2010-9-24 14:07:06 | 显示全部楼层
回复 2# 风行者


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

                谢谢风行者,先测试先!
 楼主| 发表于 2010-9-24 14:14:21 | 显示全部楼层
             --------------------------------------------------------------

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

              $File[11]            请问是什么意思!  
发表于 2010-9-24 14:21:16 | 显示全部楼层
#include <File.au3>

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

Local $sRoot, $aFile[4] = ["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[0]
        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

评分

参与人数 1金钱 +30 收起 理由
afan + 30

查看全部评分

 楼主| 发表于 2010-9-24 14:24:22 | 显示全部楼层
感谢楼主,无私的精神,值得我们学习!
发表于 2010-9-24 15:05:07 | 显示全部楼层
还不错的样子~学习语法了~
感谢分享!!
 楼主| 发表于 2010-9-24 17:04:44 | 显示全部楼层
未经测试,慎用
风行者 发表于 2010-9-24 14:02



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


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

  能不能有个读取配置文件的,执行文件可以放在任意位置。这样更灵活一些!
 楼主| 发表于 2010-9-24 17:36:50 | 显示全部楼层
#include <File.au3>
#include <Array.au3>
Dim $File[31] = ["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[0]
        $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盘所有的文件都删除了!  

  而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[0]
        $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 配置文件
[drive]
lab=d:\

[file]
F1=123
F2=456
F3=单机游戏

....后面自己添加
发表于 2010-9-24 21:32:26 | 显示全部楼层
感谢楼主,无私的精神,值得我们学习!
hxwb518 发表于 2010-9-24 14:24



    晕,你自己就是楼主…
另外,建议多看看P版的代码,效率会更高些~
 楼主| 发表于 2010-9-25 12:11:09 | 显示全部楼层
回复 11# afan


    嘿嘿,你好,请问什么是P版~!
发表于 2010-9-25 12:29:05 | 显示全部楼层
回复 12# hxwb518


    5楼 pusofalse 超级版主 —— 论坛里的大神,他的帖子含金量极高,别的我就不多说了~
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-25 09:35 , Processed in 0.103488 second(s), 29 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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