| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1676 人关注过本帖
标题:关于遍历目录的问题
取消只看楼主 加入收藏
renxiaoyao36
Rank: 9Rank: 9Rank: 9
来 自:七宝中学
等 级:贵宾
威 望:31
帖 子:347
专家分:1077
注 册:2014-9-18
结帖率:92.31%
收藏
已结贴  问题点数:20 回复次数:8 
关于遍历目录的问题
如何写一个函数,遍历一个上级目录下的文件及其子目录内的所有EXE文件,包括2级目录,3级目录,等等
我网上找到的是一个SUB,我不大会改,应为它似乎只输出一次且是Listbox格式输出,我的需求是每次找到新的文件后,将这个文件的完整路径(注意是完整路径),输出到一个文件中。而且要跳过一个特定的子目录。
在此声明,我不是伸手党,只是应为我现在学习的东西光靠源代码不能理解了,所以在此请求各位帮助我一下,谢谢啦
先放一下我学习时找到的代码
程序代码:
Sub GetPath(ByVal FilePath As String, ByVal list As ListBox)
      
    '获取文件路径
    FilePath = IIf(Right(FilePath, 1) = "\", FilePath, FilePath & "\")
    '获取当前目录内的文件名
    Dim FileName As String
    FileName = Dir(FilePath)    '初次使用dir函数需指明路径
      
    '使用一个循环,遍历当前目录内的文件,并逐一验证其属性
    Do While FileName <> ""
        If Right(FileName, 3) = "jpg" Then
            List1.AddItem FilePath & "\" & FileName
        End If
          
        FileName = Dir
    Loop
      
    '缺少此句只会遍历一级目录
    FileName = LCase(Dir(FilePath, vbDirectory))
      
    Dim ChildContent() As String
    Dim Count As Integer
    '获取下一级目录
    Do While FileName <> ""
        If FileName <> "." And FileName <> ".." Then
            If GetAttr(FilePath & FileName) And vbDirectory Then
                Count = Count + 1
               ReDim Preserve ChildContent(Count)
                '将下一级目录放入动态数组
                ChildContent(Count) = FilePath & "\" & FileName
            End If
        End If
          
        FileName = Dir
        DoEvents
                 
    Loop
      
    '回调自身,获取下一级目录内文件路径
    Dim i As Integer
    For i = 1 To Count
        GetPath ChildContent(i), list
    Next i
End Sub
搜索更多相关主题的帖子: 源代码 而且 如何 网上 
2015-04-29 20:09
renxiaoyao36
Rank: 9Rank: 9Rank: 9
来 自:七宝中学
等 级:贵宾
威 望:31
帖 子:347
专家分:1077
注 册:2014-9-18
收藏
得分:0 
是不是加上
If m<>"指定目录" then  m = m & "*" & p & s

递归不大会,看到有个M的注释说是存储的目录,这样子改可行么?

编程蛋疼的不是枯燥,而是辛辛苦苦编完几百行的代码,运行,“Runtime Error “xxx””。
2015-04-30 17:31
renxiaoyao36
Rank: 9Rank: 9Rank: 9
来 自:七宝中学
等 级:贵宾
威 望:31
帖 子:347
专家分:1077
注 册:2014-9-18
收藏
得分:0 
谢谢,受教了
我去试一下
另外,输出的完整文件路径是不是Text1.Text?这样改动是否可以达成输出文件路径的要求
Text1.Text = Text1.Text & p & s & vbCrLf        '显示取的内容

改成
open (app.path & "\cptemp\" & Tag1 & ".tmp") for output as #1
Print #1,(p & s)
close #1

在论坛打字的,没有在VB编译环境里试过,有点难以看懂,抱歉
Tag1是个计数变量,每次递归完成时值+1

编程蛋疼的不是枯燥,而是辛辛苦苦编完几百行的代码,运行,“Runtime Error “xxx””。
2015-05-01 09:04
renxiaoyao36
Rank: 9Rank: 9Rank: 9
来 自:七宝中学
等 级:贵宾
威 望:31
帖 子:347
专家分:1077
注 册:2014-9-18
收藏
得分:0 
以下是引用风吹过b在2015-5-1 11:13:19的发言:

没错。 p 是路径,s 是刚取到的目录名。
这样保存可以的。

递归,就是自己调用自己 。最有名的递归就是 汉诺塔 的程序,那个是典型的 递归。
还有,计算 阶乘,也可以用递归来写。

if n-1 then
   R=1
else
   R=n*R(n-1)
end if

如果 R(5)
1  5*R(4)
2  5*(4*R(3))
3  5*(4*(3*R(2))
4  5*(4*(3*(2*R(1))))
5  5*(4*(3*(2*(1))))

if n-1 then
这个IF语句感觉缺少了一些判断语句啊

编程蛋疼的不是枯燥,而是辛辛苦苦编完几百行的代码,运行,“Runtime Error “xxx””。
2015-05-01 11:29
renxiaoyao36
Rank: 9Rank: 9Rank: 9
来 自:七宝中学
等 级:贵宾
威 望:31
帖 子:347
专家分:1077
注 册:2014-9-18
收藏
得分:0 
不多说了,先给分
给完分风版主还是要回答一下我的疑惑啊

编程蛋疼的不是枯燥,而是辛辛苦苦编完几百行的代码,运行,“Runtime Error “xxx””。
2015-05-01 11:29
renxiaoyao36
Rank: 9Rank: 9Rank: 9
来 自:七宝中学
等 级:贵宾
威 望:31
帖 子:347
专家分:1077
注 册:2014-9-18
收藏
得分:0 
另外问一下
Do while是不是个循环?只要条件依旧符合,循环永不停止?
最近用Do while发现怎么都出不去,吧Do while的条件的值改一下就可以了,所以在此问一下

编程蛋疼的不是枯燥,而是辛辛苦苦编完几百行的代码,运行,“Runtime Error “xxx””。
2015-05-01 11:34
renxiaoyao36
Rank: 9Rank: 9Rank: 9
来 自:七宝中学
等 级:贵宾
威 望:31
帖 子:347
专家分:1077
注 册:2014-9-18
收藏
得分:0 
谢谢各位的帮助

编程蛋疼的不是枯燥,而是辛辛苦苦编完几百行的代码,运行,“Runtime Error “xxx””。
2015-05-02 10:19
renxiaoyao36
Rank: 9Rank: 9Rank: 9
来 自:七宝中学
等 级:贵宾
威 望:31
帖 子:347
专家分:1077
注 册:2014-9-18
收藏
得分:0 
再问个问题
这个遍历的SUB的退出判定在哪里?没找到……我需要在退出判定语句后面加上一句变量赋值语句

编程蛋疼的不是枯燥,而是辛辛苦苦编完几百行的代码,运行,“Runtime Error “xxx””。
2015-05-02 12:40
renxiaoyao36
Rank: 9Rank: 9Rank: 9
来 自:七宝中学
等 级:贵宾
威 望:31
帖 子:347
专家分:1077
注 册:2014-9-18
收藏
得分:0 
有人么,最后一个疑问了,回答一下啦

编程蛋疼的不是枯燥,而是辛辛苦苦编完几百行的代码,运行,“Runtime Error “xxx””。
2015-05-02 17:27
快速回复:关于遍历目录的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014290 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved