[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 lateol 于 2013-3-13 13:25 编辑

回复 5# BAT-VBS
试了一下 可以查找到并显示。但是显示出来的变量 如何再用来替换呢。
如:
这个文本内有 S3000 S3500 S3000
这三个变量 然后把他们全部一次修改 就如 wankoilz  写的vbs替换方式。
能实现吗?

TOP

我觉得楼主的要求用vbs实现起来稳妥点,加上了排序显示功能,看起来有点臃肿。
搜索匹配的是:S后面跟几个数字和M03
把vbs放到待处理txt文件一起运行
  1. Option Explicit
  2. Dim FSO,file,ofile,strText
  3. Set FSO=CreateObject("scripting.filesystemobject")
  4. For Each file In FSO.GetFolder(".").Files
  5.     If LCase(FSO.GetExtensionName(file))="txt" Then
  6. Set ofile=FSO.OpenTextFile(file,1)
  7. strText=ofile.ReadAll():ofile.Close
  8. Set ofile=FSO.OpenTextFile(file,2)
  9. ofile.Write(ShowAndReplace(strText,file.Name))
  10. ofile.Close
  11.     End If
  12. Next
  13. WScript.Echo "处理结束!"
  14. Function ShowAndReplace(str,filename)
  15. Dim Matches,Match
  16. Dim i,j,intCount,dicTmp,strTmp,strShow,strSource
  17.     With CreateObject("vbscript.regexp")
  18.         .Global=True
  19.         .IgnoreCase=True
  20.         .Multiline=True
  21.         .pattern="S[1-9]\d*(?=M03)"
  22.         If  .Test(str)=True Then
  23.             Set Matches=.Execute(str)
  24.             Set dicTmp=CreateObject("scripting.dictionary")
  25.             For Each Match In Matches
  26.                 intCount=intCount+1
  27.                 dicTmp.Add intCount,Match
  28.             Next
  29.             '排序
  30.             For i=1 To dicTmp.Count-1
  31.                 For j=i+1 To dicTmp.Count
  32.                     If dicTmp.Item(i)>dicTmp.Item(j) Then
  33.                         strTmp=dicTmp.Item(i)
  34.                         dicTmp.Item(i)=dicTmp.Item(j)
  35.                         dicTmp.Item(j)=strTmp
  36.                     End If
  37.                 Next
  38.             Next
  39.         For i=1 To dicTmp.Count
  40.             strShow=strShow&dicTmp.Item(i)&vbCrLf
  41.         Next      
  42.         strSource=InputBox(strShow,filename&"的搜索结果,请输入替换值:")
  43.         ShowAndReplace=.Replace(str,strSource)
  44.     Else
  45.         ShowAndReplace=str
  46.     End If
  47.     End With
  48. End Function
复制代码
1

评分人数

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f %%a in ('findstr "^S" a.txt') do (
  4.     set str=%%a
  5.     set str=!str:M03=!
  6.     echo,!str!
  7. )
  8. pause
复制代码

TOP

传个附件来看看吧

TOP

返回列表