用于子目录和文件的Lotusscript搜索windows目录。递归?

时间:2013-03-15 04:44:12

标签: lotus-notes lotus-domino lotusscript

我正在尝试编写一个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中。

2 个答案:

答案 0 :(得分:6)

我已经使用了this solution几次并且它有效:

答案 1 :(得分:0)

首先,您不希望以递归方式调用Initialize。您需要一个将路径名传递给的函数。

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