首页 > 解决方案 > 无法从 Domino tmp 文件夹中删除文件 - 路径/文件访问错误

问题描述

我有一个代理可以列出和删除 Domino 临时文件夹中的文件:

Sub Initialize
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Set db = session.CurrentDatabase
    Print "-- running from db " + db.Notesurl
    Set filelist = New HandleFilesInDirectory("D:\IBM\Domino\Temp\notes53F5BD\xspupload\")
    'Set filelist = New HandleFilesInDirectory("D:\IBM\Domino\Temp\notes53F5BD\")
    Call filelist.GetFilesOnDisk()
'%REM
    Print "Directory List Starts"   
    ForAll x In filelist.m_SumDirs
        Print ListTag(x)
    End ForAll
'%END REM   
'%REM   
Print "File List Starts"    
    ForAll y In filelist.m_SumFiles
        Print ListTag(y)
        Kill y
    End ForAll
'%END REM
    Call filelist.EraseListFromMemory()
End Sub

脚本库:

%REM
    Class HandleFilesInDirectory
    Description: Comments for Class
%END REM
Public Class HandleFilesInDirectory
    Private m_session As NotesSession
    Private m_DirectoryStart As String
    Public m_SumDirs List As String
    Public m_SumFiles List As String

    Public Sub New (DirectoryStart As String)
        Set me.m_session = New NotesSession
        me.m_DirectoryStart = DirectoryStart
    End Sub

    %REM
        Sub GetFilesOnDisk
        Description: Comments for Sub
    %END REM

    Public Sub GetFilesOnDisk()
        Call me.ScanDirs(me.m_DirectoryStart)
    End Sub

    %REM
        Sub ScanDirs
        Description: Comments for Sub
    %END REM
    Private Sub ScanDirs(path As String)
        Dim sess As New NotesSession
        Dim DirList As Variant
        Dim filename As String
        Dim filepath As String
        Dim sep As String
        If path <> "" Then
            If InStr(sess.Platform, "Windows") > 0 Then
                sep = "\"
            Else
                sep = "/"
            End If
            ReDim DirList(0)
            If InStr(path, sep) > 0 Then
                filepath = StrLeftBack(path, sep)
            End If
            filename = Dir(path, 16)
            While filename <> ""
                If filename <> "." And filename <> ".." Then
                    If (GetFileAttr(filepath & sep & filename) And 16) >0 Then
                        DirList = ArrayAppend(DirList,filepath & sep & filename & sep)
                        m_SumDirs(filepath & sep & filename & sep) = "Yes"
                    Else
                        ' PERFORM DESIRED CHECK/OPERATION
                        ' ON filepath & sep & filename
                        ' OR filename (as desired)
                        m_SumFiles(filepath & sep & filename) = "Yes"
                    End If
                End If
                filename = Dir
            Wend
            DirList = FullTrim(DirList)
            ForAll dirpath In DirList
                ScanDirs(dirpath)
            End ForAll
        End If
    End Sub

    %REM
        Sub EraseListFromMemory
        Description: Comments for Sub
    %END REM
    Public Sub EraseListFromMemory()    
        Erase m_SumDirs
        Erase m_SumFiles
    End Sub
End Class

它返回以下输出:

[02D4:0002-0C68] 2019-09-24 16:19:19 AMgr:代理('KKom\patrick\app.nsf' 中的'GetMyFiles')打印:D:\IBM\Domino\Temp\notes53F5BD\xspupload\ placeholder.txt [02D4:0002-0C68] 2019-09-24 16:19:19 AMgr:代理('KKom\patrick\app.nsf' 中的'GetMyFiles')错误消息:路径/文件访问错误

代理签署了正确的 ID,运行时安全级别设置为 3

有人可以解释我做错了什么吗?

标签: lotus-dominolotusscript

解决方案


推荐阅读