找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
楼主: syqh2010

[文件操作] [已解决]批处理如何获取指定条件的文本列表?

[复制链接]
发表于 2015-3-6 15:37:56 | 显示全部楼层
Do...Loop循环如何才能"按了停止"呢?

"需保持a.txt中内容是最新的,防重复更改" 又是个什么意思呢?
发表于 2015-3-6 16:19:12 | 显示全部楼层
本帖最后由 apang 于 2015-3-7 16:13 编辑

要停止,在任务管理器中结束 WScript.exe 进程
或者,时间累加后的值大于当前时间即自动退出
  1. ''On Error Resume Next
  2. Dim strDir, arrKey, strDt
  3. strDir = "D:\Test"
  4. arrKey = Array(":L  ABC", ":OP  1.5", "XXX")
  5. strDt = "2015/3/1 8:05:00"

  6. Do while DateDiff("s", strDt, Now()) > 0
  7.     call Main()
  8.     strDt = DateAdd("n", "10", strDt)  ''加 10 分钟
  9.     WScript.Sleep 5000
  10. Loop

  11. Sub Main()
  12.     Dim fso, f, txt, objFile, s
  13.     s = ""
  14.     Set fso = CreateObject("Scripting.FileSystemObject")
  15.     For Each f in fso.GetFolder(strDir).Files
  16.         If LCase(Right(f, 4)) = ".txt" Then
  17.             If DateDiff("s", strDt, f.DateLastModified) > 0 Then
  18.                 Set objFile = fso.OpentextFile(f, 1)
  19.                 txt = objFile.ReadAll
  20.                 If TestKeyWord(txt) Then s = s & f.Name & vbCrLf
  21.                 objFile.Close
  22.             End If
  23.         End If
  24.     Next
  25.     fso.OpenTextFile("a.txt", 2, true).Write s
  26.     CreateObject("WScript.Shell").Run "cmd /c ""ch.bat""",,true  ''调用bat
  27.     Set fso = Nothing
  28. End Sub

  29. Function TestKeyWord(ByVal txt)
  30.     Dim i
  31.     TestKeyWord = True
  32.     txt = vbCrLf & txt & vbCrLf
  33.     For i = 0 to UBound(arrKey)
  34.         If InStr(txt, vbCrLf & arrKey(i) & vbCrLf) = 0 Then
  35.             TestKeyWord = False : Exit For
  36.         End If
  37.     Next
  38. End Function
复制代码

评分

参与人数 1技术 +1 收起 理由
syqh2010 + 1 乐于助人

查看全部评分

 楼主| 发表于 2015-3-6 18:47:52 | 显示全部楼层
谢谢你!
请问是保存为bat,还是vbs。
另如何在循环哪里加如调用ch.bat,谢谢!
发表于 2015-3-6 19:50:24 | 显示全部楼层
本帖最后由 apang 于 2015-3-6 19:52 编辑

回复 18# syqh2010


    已修改。保存为Test.vbs
注意每个关键字在文本中各占一行,前后不能包含空格,区分大小写
 楼主| 发表于 2015-3-7 08:19:37 | 显示全部楼层
回复 17# apang


   
谢谢,你的代码完全符合我的要求,也很快。
但我的描述欠考虑,时间一直叠加,最终会大于当前时间,那时问题就来了。

请帮忙改为和当前的时间判断。
strDT=now()??
谢谢!
发表于 2015-3-7 16:19:19 | 显示全部楼层
回复 20# syqh2010


    最后一次修改
以后提问之前请务必想清楚了再提问,像这样不仅浪费了你的时间,也浪费别人不少的时间。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-23 02:08

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表