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

[AU3基础] 遍历子目录求助

  [复制链接]
发表于 2014-10-13 16:05:34 | 显示全部楼层 |阅读模式
当前目录下有多个子目录每个里面有一个DCCS.exe文件
想遍历所有子目录找到该程序并执行,该怎么写代码哦。
发表于 2014-10-13 22:31:19 | 显示全部楼层
_FileListToArray
发表于 2014-10-14 14:02:48 | 显示全部楼层
看代码吧!之前论坛高手的代码。搜索速度很快!!
#Include <Array.au3>
Dim $dirlist,$dirarry
$dirlist=_FileListEx("c:\windows")
$dirarry=StringSplit($dirlist,"|")
_ArrayDisplay($dirarry)

Func _FileListEx($sDir)
        If StringInStr(FileGetAttrib($sDir),"D")=0 Then Return SetError(1,0,"")
        Local $oFSO = ObjCreate("Scripting.FileSystemObject")
        Local $objDir
                Local $Sources=$sDir
        Local $aDir = StringSplit($sDir, "|", 2)
        Local $iCnt = 0
        Local $sFiles = "",$Attributes,$DateCreated,$DateLastAccessed,$DateLastModified,$ShortName,$ShortPath,$Size,$Type
        Do
                $objDir = $oFSO.GetFolder($aDir[$iCnt])
                For $aItem In $objDir.SubFolders
                        ;扩展应用改下这句, 如指定文件夹 If StringInStr($aItem.Name, "XXX") Then
                        $sDir &= "|" & $aItem.Path
                        ;文件夹层数可以通过 StringReplace($aItem.Path, "", "", 0, 1)的@extended值来判断
                Next
                ;如果仅找文件夹,不找文件,$sFiles的语句都不用,最后是 Return $sDir
                For $aItem In $objDir.Files
                        ;扩展应用改下面这句
                                                 $sFiles &= $aItem.Path & "|"
                        ;$sFiles &= StringRight($aItem.Path,StringLen($aItem.Path)-StringLen($Sources)-1) & "|"
                        ;例如要找文件名中包含"kb"(不分大小写),改为: if StringInStr($aItem.Name, "kb") Then $sFiles &= $aItem.Path & "|"
                        ;其他应用请参照上例修改: $aItem.XXX
                                                #cs
                        $Attributes &= $aItem.Attributes & "|"        ;Attributes        设置或返回文件或文件夹的属性
                        $DateCreated &= $aItem.DateCreated & "|"        ;DateCreated   返回指定的文件或文件夹的创建日期和时间。只读
                        $DateLastAccessed &= $aItem.DateLastAccessed & "|"        ;DateLastAccessed 返回指定的文件或文件夹的上次访问日期(和时间)。只读
                        $DateLastModified &= $aItem.DateLastModified & "|"        ;DateLastModified 返回指定的文件或文件夹的上次修改日期和时间。只读
                        $ShortName &= $aItem.ShortName & "|"        ;ShortName   返回按照早期8.3文件命名约定转换的短文件名
                        $ShortPath &= $aItem.ShortPath& "|"        ;ShortPath   返回按照早期8.3命名约定转换的短路径名
                        $Size &= $aItem.Size & "|"        ;Size    对于文件返回指定文件的字节数;对于文件夹,返回文件夹所有的文件夹和子文件夹的字节数
                                                $Type &= $aItem.Type & "|"        ;Type    返回文件或文件夹的类型信息
                                                #ce
                Next
                $iCnt += 1
                If UBound($aDir) <= $iCnt Then $aDir = StringSplit($sDir, "|", 2)
        Until UBound($aDir) <= $iCnt
        If $sFiles Then $sFiles = StringTrimRight($sFiles, 1);去掉最右边"|"
        Return $sFiles
EndFunc
发表于 2014-10-16 17:12:51 | 显示全部楼层
回复 3# kemyliu


    学习了,,得慢慢研究这个有点难度,,
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-28 04:18 , Processed in 0.081097 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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