本帖最后由 syqh2010 于 2015-3-8 04:20 编辑
问题已解决,多谢apang等多位高手的无私帮助。
附上代码:- ''On Error Resume Next
- Dim strDir, arrKey, strDt,str1,str2,str3,str4,str5
- strDir = "D:\test"
- arrKey = Array("LensSpeed=1200")
- ''strDt = "2015/3/7 7:15:00"
- ''strDt = now()
-
- Do while true
- str1=now() ''计时
- call Main()
- WScript.Sleep 5000
- str2=now()-str1 ''用时
- str3=Hour(formatdatetime(str2,0)) ''时
- str4=Minute(formatdatetime(str2,0)) ''分
- str5=Second(formatdatetime(str2,0)) ''秒
-
- strDt=DateAdd("h", "-" & str3 , now())
- strDt=DateAdd("n", "-" & str4 , strDt)
- strDt=DateAdd("s", "-" & str5 , strDt)
- Loop
-
- Sub Main()
- Dim fso, f, d, txt, objFile, s
- s = ""
- Set fso = CreateObject("Scripting.FileSystemObject")
- For Each f in fso.GetFolder(strDir).Files
- If LCase(Right(f, 2)) = ".l" or LCase(Right(f, 2)) = ".r" Then
- d = f.DateLastModified
- If CDate(d) > CDate(strDt) Then
- Set objFile = fso.OpentextFile(f, 1)
- txt = objFile.ReadAll
- ''txt = Replace(txt,vbCrLf,Chr(10))
- If TestKeyWord(txt) Then s = s & f.Name & vbCrLf
- objFile.Close
- End If
- End If
- Next
- fso.OpenTextFile("a.txt", 2, true).Write s
- ''CreateObject("WScript.Shell").Run "cmd /c ""ch.bat""",,true ''调用bat
- Set fso = Nothing
- End Sub
-
- Function TestKeyWord(ByVal txt)
- Dim i
- TestKeyWord = True
- txt = vbCrLf & txt & vbCrLf
- For i = 0 to UBound(arrKey)
- If InStr(txt, vbCrLf & arrKey(i) & vbCrLf) = 0 Then
- TestKeyWord = False : Exit For
- End If
- Next
- End Function
复制代码 一句话
找出文本中含有关键字,且修改时间大于TTT的文本列表。
一文件夹(类似中转站),里面的txt文件会实时更新(新的进来,旧的删除,或修改日期变化),文本数量较多,少则几百,多则上千。
txt文件名如11.txt,12.txt......
txt文件内容相似,如:
第1行
第2行
C ABC
..
第200行
其中第3行格式相同,均为(:LC+2个空格+字符) 字符最少2个,最多5个(如A1、BC5、G456、、、等)
:LC在文本中是唯一的
若直接找文本,就找:LC ABC
若按行查找, 就找第3行是否为:LC ABC(注,空行也算一行)
请问如何找出:
1):LC后字符=ABC
2)文本修改时间>=2015/3/1 8:00
的文件名写入另一文本a.txt 【1)2)同时满足】
3)a.txt与程序在同一目录,需处理的文件夹在另一目录
a.txt内容如:
11.txt
12.txt
..
不知能否实现,希望各位能帮忙,谢谢! |