2013-03-15 146 views
2

我想写一个LS代理来扫描窗口中的目录,例如:'C:\'用于任何文件和子目录。对于每个子目录,它将进入并搜索更多的文件和子目录,并继续进行,直至找不到更多的目录。我习惯于编写递归代码来替换或删除长字符串中的字符,但对于这一个我完全失去了。下面是我的代码(它的代码从Domino帮助文件的混合和一个我在IBM网站上发现):Lotusscript搜索窗口目录的子目录和文件。递归?

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中。

回答

6

我用this solution几次和它的作品一种享受:

+1

只是为了补充一点。有一个已知问题,其中DIR $可以锁定文件夹(如果您计划以递归方式删除)。 SPR SODY85SM84。更多详情请点击http://www-10.lotus.com/ldd/nd85forum.nsf/5f27803bba85d8e285256bf10054620d/322e819311441a5a8525772e005d0078?OpenDocument – 2013-03-15 13:10:37

0

首先,你不想递归调用初始化。你需要一个你传递路径名的函数。

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