我正在编写一个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”部分之前我也在代码中使用了它,它工作得非常好。
答案 0 :(得分:1)
documentation for the Dir$ function说
可以在fileSpec中使用标准通配符来指定所有字符 满足通配符标准的文件。星号(*)表示 文件名或扩展名指定包含任何字符的所有文件 那个位置。任何一个字符位置的问号(?) 名称的一部分指定该位置的任何单个字符。
它没有说&#34;#&#34;或类似&#34; [00-99]&#34;的范围,使我得出结论,不支持那种模式匹配。
在我看来,您可能不得不使用Dir $与&#34; *&#34;的组合。或&#34; ??&#34;和like operator以便做你想做的事。