2

我正在尝试编写一个 LS 代理来扫描 Windows 中的目录,例如:'C:\' 中的任何文件和子目录。对于每个子目录,它将进入内部并搜索更多文件和子目录,并继续直到没有更多可查找。我习惯于编写递归代码来替换或删除长字符串中的字符,但对于这个我完全迷失了。下面是我的代码(它是来自 domino 帮助文件和我在 IBM 站点中找到的代码的混合):

Sub Initialize
    Dim pathname As String, filename As String
    pathname = "C:\*.*"
    filename = Dir(pathname, 16)
    Print "Begin scan"
    Do While filename<>""
        If IsDir(pathname+filename)=True Then
            Print pathname+filename+" is a directory"
            'look for more directories and files in here
        Else
            Print filename+" is a file"
        End If
        filename=Dir()
    Loop
    Print "Finish scan"
End Sub

Function IsDir(Path As String) As Integer 
    Dim Void&
    Dim Result As Boolean
    On Error GoTo ErrorHandler
    Void=FileLen(Path)
    Result=False
    GoTo Over
ErrorHandler:
    Result=True
    Resume Over
Over:
    IsDir=Result
End Function

我需要更改什么才能使代码在注释部分递归?('在此处查找更多目录和文件)。我不只是想找到一个特定的文件或目录。我想要所有可用的东西。如果我能够做到这一点,那么我可以检索它们并保存到 NotesDocument 中。

4

2 回答 2

6

我已经使用过这个解决方案几次了,效果很好:

于 2013-03-15T10:33:12.280 回答
0

首先,您不想递归地调用 Initialize。您需要一个将路径名传递到其中的函数。

其次,由于 DIR 函数的工作方式是有状态的,我认为您必须使用两个循环来执行此操作。在第一个循环中,您处理常规文件并将文件夹名称放入列表中。然后在第二个循环中,您浏览文件夹列表并调用递归函数,将路径传递给每个文件夹。

于 2013-03-15T10:47:46.673 回答