找回密码
 加入
搜索
查看: 3421|回复: 13

[AU3基础] [已解决]查找不确定在哪里的 Tencent Files文件夹 然后在列出文件夹内的文件夹名

  [复制链接]
发表于 2016-3-11 19:40:47 | 显示全部楼层 |阅读模式
本帖最后由 862228699 于 2016-3-19 09:21 编辑

非常感谢你,帮我解决了几个月来最伤头的问题。。。。
在问你一个代码问题。。
我想查找腾讯QQ,存的QQ号的文件夹       Tencent Files      这个文件夹,这个文件夹不定在哪个盘符,有可能在C,D,E,F,也有可能在某个二级目录。三级目录。4级目录

这个目录下,有很多QQ号文件夹,我怎么才能把这些号码提取出来。。。。
下载代码可以查找根目录,但无法找到2级,或者下下级。。
$source = "\Tencent Files" ;盘中根目录下的文件夹
;$dest = @ScriptDir & "" ;复制到目标文件夹
$var = DriveGetDrive("all")
If Not @error Then
        For $i = 1 To $var[0] ;遍历获取到的多个可移动磁盘
                If ($var[$i] <> "A:") Then
                        If FileExists($var[$i] & $source) Then ;如果找到U盘里面有文件夹
                                MsgBox(0, 0, "找到")
                        Else
                                MsgBox(0, 0, "没有找到")
                                
                        EndIf
                EndIf
        Next
EndIf
发表于 2016-3-12 09:18:29 | 显示全部楼层
不用遍历也可以

#include <file.au3>
#include <array.au3>
Local $InstallDir, $aFileList, $str, $aQQ
$InstallDir = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Tencent\QQ2009", "Install")
If FileExists($InstallDir & "\Users") Then $aFileList = _FileListToArray($InstallDir & "\Users")
If IsArray($aFileList) Then $str = _ArrayToString($aFileList, "|")
$aQQ = StringRegExp($str, "\d{5,15}", 3)
_ArrayDisplay($aQQ,"QQ号码")

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2016-3-12 09:29:06 | 显示全部楼层
我运行不了,,,你用的什么编译器
 楼主| 发表于 2016-3-12 09:33:00 | 显示全部楼层
回复 2# haijie1223
我测试了一下,不行,因为我要吧这个程序用在刚安装完系统的情况下使用。
注册表里面是没有QQ的任何信息,只有遍历文件夹里面才可以获取。。。
 楼主| 发表于 2016-3-12 09:37:36 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2016-3-13 17:09:01 | 显示全部楼层
回复 2# haijie1223


    有办法解决吗??
发表于 2016-3-13 17:49:43 | 显示全部楼层
回复 6# 862228699


    有
 楼主| 发表于 2016-3-13 17:56:20 | 显示全部楼层
回复 7# haijie1223
感谢~~~~~~~~~~~~
发表于 2016-3-15 11:59:20 | 显示全部楼层
遍历效率好慢
#include <file.au3>
#include <array.au3>

Global $aArray[1], $Num = 0, $aDISK
Global $aFileList, $InstallDir, $aFilePath, $str, $aQQ
$aDISK = DriveGetDrive("ALL")
If Not @error Then
        For $I = 1 To $aDISK[0]
                If DriveStatus($aDISK[$I]) = "READY" And $aDISK[$I] <> @HomeDrive Then _SEARCH($aDISK[$I], "QQ.EXE")
                If UBound($aArray) > 1 Then
                        For $j = 1 To UBound($aArray) - 1
                                $aFilePath = StringRegExp($aArray[$j], ".+(?=\\)", 3)
                                If IsArray($aFilePath) Then $InstallDir = $aFilePath[0] & "\Users"
                                If FileExists($InstallDir) Then $aFileList = _FileListToArray($InstallDir)
                                If IsArray($aFileList) Then $str = _ArrayToString($aFileList, "|")
                                $aQQ = StringRegExp($str, "\d{5,15}", 3)
                                _ArrayDisplay($aQQ, "QQ号码")
                        Next
                        ExitLoop
                EndIf
        Next
EndIf


Func _SEARCH($path, $filelx)
        Local $filelist
        Local $folders
        Local $I, $j, $newpath
        $filelist = _FileListToArray($path, $filelx, 1)
        If Not @error Then
                If $filelist[0] > 0 Then
                        For $I = 1 To $filelist[0]
                                $Num = $Num + 1
                                ReDim $aArray[UBound($aArray) + 1]
                                $aArray[$Num] = $path
                        Next
                EndIf
        EndIf
        $folders = _FileListToArray($path, "*", 2)
        If Not @error Then
                If $folders[0] > 0 Then
                        For $j = 1 To $folders[0]
                                $newpath = $path & "\" & $folders[$j]
                                _SEARCH($newpath, $filelx)
                        Next
                EndIf
        EndIf
EndFunc   ;==>_SEARCH
 楼主| 发表于 2016-3-15 18:15:18 | 显示全部楼层
确实慢。。。半天都没运行完。。。运行完了。
 楼主| 发表于 2016-3-15 18:16:00 | 显示全部楼层
回复 9# haijie1223
不过我发现了。现在腾讯安装QQ,默认都是在我的文档下面建立了一个 QQ号文件夹。。
 楼主| 发表于 2016-3-15 23:14:33 | 显示全部楼层
回复 9# haijie1223
Local $size
$size = DirGetSize (@MyDocumentsDir&"\Tencent Files", 3)
MsgBox(0, "不计算子文件夹的文件夹个数", $size[2])
这个可以计算里面有多少个文件夹,但是要怎么循环列出文件夹的名字呢?
如果文件夹名字 不是全数字,就不用列出。。请大神帮我一下。。。谢谢。。。。
发表于 2016-3-16 07:34:48 | 显示全部楼层
回复 11# 862228699


    NT6 系统才会多出这个文件夹,NT5.0及以下没有吧。
发表于 2016-3-16 08:58:00 | 显示全部楼层
thanks 4 sharing!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-22 14:08 , Processed in 0.085636 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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