匹配模式与通配符的问题

时间:2017-08-08 08:52:37

标签: lotus-notes lotusscript

我正在编写一个lotusscript代理,它将每5分钟运行一次,并且如果服务器上的SEMDEBUG.TXT日志文件超过某个阈值,则会发送电子邮件警报。访问此文件的代码如下所述。

strSemDebugFilePath$ = "D:\IBM\Domino\Data\IBM_TECHNICAL_SUPPORT\SEMDEBUG_<server_name>_" & CStr(Year(Now())) & "_" & strMonth &"_" & strDay & "@" & strHour & "_" & strMin & "_*.TXT"

strSemDebugFileName$ = Dir$(strSemDebugFilePath$,0)

由于此代理每5分钟运行一次,因此我设置了变量strMin的值,使其从当前时间开始减少5分钟,这样当代理运行时,它将检查日志文件大小是否超过阈值在过去的5分钟。下面提到了这行代码。

strMin = CStr(Minute(Now()))
    If Int(strMin) > 5 Then
        strMin = CStr(Int(strMin)-5)
    End If
    If Len(strMin)=1 Then
        strMin="0"&strMin
    End If

现在问题是我使用匹配[0-strMin]的模式代替将访问SEMDEBUG.TXT文件的代码行中的变量strMin,但由于某种原因这不起作用。所以最后一行代码如下所述。

strSemDebugFilePath$ = "D:\IBM\Domino\Data\IBM_TECHNICAL_SUPPORT\SEMDEBUG_<server_name>_" & CStr(Year(Now())) & "_" & strMonth &"_" & strDay & "@" & strHour & "_" & "[00-strMin]" & "_*.TXT"

上述行中的模式匹配[00-strMin]不起作用。它没有返回正确的结果。任何建议都会非常感激。

P.S。:我还尝试了以下模式匹配,以验证字符列表中的匹配是否有效。但是它们都没有与通配符*分开。 [0-9],[0-90-9],[#] 以上都不起作用。 只有*正在工作,在匹配“.TXT”部分之前我也在代码中使用了它,它工作得非常好。

1 个答案:

答案 0 :(得分:1)

documentation for the Dir$ function

  

可以在fileSpec中使用标准通配符来指定所有字符   满足通配符标准的文件。星号(*)表示   文件名或扩展名指定包含任何字符的所有文件   那个位置。任何一个字符位置的问号(?)   名称的一部分指定该位置的任何单个字符。

它没有说&#34;#&#34;或类似&#34; [00-99]&#34;的范围,使我得出结论,不支持那种模式匹配。

在我看来,您可能不得不使用Dir $与&#34; *&#34;的组合。或&#34; ??&#34;和like operator以便做你想做的事。