2

Windows のディレクトリをスキャンする LS エージェントを作成しようとしています。サブディレクトリごとに、内部に入り、さらにファイルとサブディレクトリを検索し、探すものがなくなるまで続けます。長い文字列内の文字を置換または削除する再帰コードを書くのに慣れていますが、これについては完全に迷っています。以下は私のコードです (ドミノのヘルプ ファイルのコードと、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

コメント部分でコードを再帰的にするには、何を変更する必要がありますか? ('ここでさらにディレクトリとファイルを探します)。特定のファイルやディレクトリを見つけようとしているだけではありません。1つで利用できるすべてが必要です。それができれば、それらを取得して NotesDocument に保存できます。

4

2 に答える 2

6

私はこのソリューションを数回使用しましたが、うまくいきます:

于 2013-03-15T10:33:12.280 に答える
0

まず第一に、Initializeを再帰的に呼び出さないでください。パス名を渡す関数が必要です。

第二に、DIR関数が機能するステートフルな方法のため、2つのループでこれを行う必要があると思います。最初のループでは、通常のファイルを処理、フォルダー名をリストに追加します。次に、2番目のループで、フォルダーのリストを調べて、各フォルダーへのパスを渡す再帰関数を呼び出します。

于 2013-03-15T10:47:46.673 に答える