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

[问题求助] [已解决]麻烦修改个VBS替换文本的

[复制链接]
发表于 2013-5-25 18:22:30 | 显示全部楼层 |阅读模式
自己研究了很久 始终弄不懂这个替换的结构。
  1. Dir = "==NC=="
  2. Set fso = CreateObject("Scripting.FileSystemObject")

  3. For Each file in fso.GetFolder(Dir).Files
  4.    Ext = fso.GetExtensionName(file)
  5.    If Lcase(Ext) = "nc" or Lcase(Ext) = "txt" _
  6.       or Lcase(Ext) = "ncd" or Lcase(Ext) = "pim" Then
  7.       ReplaceStr fso.OpenTextFile(file,1).ReadAll
  8.    End If
  9. Next

  10. Sub ReplaceStr(str)
  11.    Set re = New RegExp
  12.    re.Pattern = "==DK_T=="
  13.    re.Global = True
  14.    re.IgnoreCase = True
  15.    If not re.Test(str) Then Exit Sub
  16.    Do Until RegEx(a)
  17.       a = InputBox("===输入G43T编号[1~999]===",file.Name,"1")
  18.       If IsEmpty(a) Then Exit Sub
  19.    Loop
  20.    fso.OpenTextFile(file,2).Write re.Replace(str,"G43T" & a)
  21. End Sub

  22. Function RegEx(a)
  23.    Set reg = New RegExp
  24.    reg.Pattern = "^[1-9]\d{0,2}$"
  25.    RegEx = reg.Test(a)
  26. End function
复制代码
以上代码处理是 查找字符串"==DK_T==" 替换为 "G43Txx"  且是逐个文件修改
现在麻烦再改改 改成以下形式
查找 查找字符串"==DK_T==" 和 "==DK_T2=="  找到后 "==DK_T==" 替换为"G43TXX"  "==DK_T2==" 替换为M6HXXZ100.
输入框 如 输入 1 后 xxx.txt文本内包含"==DK_T==" 就替换为"G43T1"  "==DK_T2==" 替换为M6H1Z100. 且输入框 数值1 自增+1
以此类推。
这样可以实现吗?
注:如当前目录有9个 txt文本 都包含以上要替换的字符串,处理就只跳出VB窗口9次 没一次替换中是直接查找两个字符串 然后替换成两个不同字符串,就是自定义输入框的数值的一样的。
谢谢。

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2013-5-25 19:37:08 | 显示全部楼层
本帖最后由 suiyanlovetian 于 2013-5-25 19:42 编辑

听得不太明白。lz能否再详细讲讲。改起来很容易的。
 楼主| 发表于 2013-5-25 20:21:15 | 显示全部楼层
本帖最后由 lateol 于 2013-5-25 20:28 编辑

回复 2# suiyanlovetian


    也就是说 把文本 内包含的"==DK_T=="和"==DK_T2==字符串都分别替换为G43TXX 和 M6HXXZ100。 XX表示输入框内自定义要输入的值【1~999】
比如说 框内输入4 则 吧该文本内的"==DK_T=="和"==DK_T2==字符串替换成G43T4 和 M6H4Z100。 是同时替换。
 楼主| 发表于 2013-5-25 20:29:02 | 显示全部楼层
回复 2# suiyanlovetian


    呵呵 不好意思 错别字有点多 嘻嘻。改过来了
发表于 2013-5-25 20:40:10 | 显示全部楼层
嗯,我明白了,vbs稍微学了点,也不久,正好练练手、根据你说的,不麻烦的。我试试先哈~
发表于 2013-5-25 20:43:46 | 显示全部楼层
楼主哇,我这代码并非什么好代码,就不要贴在这里献丑了。。。

再说,要是我来做,我宁愿重新来做,也不愿意在别人代码上修修补补

再再说,您发错板块啦
 楼主| 发表于 2013-5-25 20:51:40 | 显示全部楼层
回复 6# apang


    好吧 那帮我重做一个 非常感谢,很简单 就是在 查找字符串哪里再加多一个。"==DK_T2== 替换为 M6H值Z100.
  就等你的出现了。
发表于 2013-5-25 20:59:20 | 显示全部楼层
回复 7# lateol


    为什么就认为我一定会帮你呢?你知道你这样说话会得罪好多好多人吗?
发表于 2013-5-25 21:42:29 | 显示全部楼层
  1. Dir = "==NC=="
  2. Set fso = CreateObject("Scripting.FileSystemObject")

  3. For Each file in fso.GetFolder(Dir).Files
  4.    Ext = fso.GetExtensionName(file)
  5.    If Lcase(Ext) = "nc" or Lcase(Ext) = "txt" _
  6.       or Lcase(Ext) = "ncd" or Lcase(Ext) = "pim" Then
  7.       ReplaceStr fso.OpenTextFile(file,1).ReadAll
  8.    End If
  9. Next

  10. Sub ReplaceStr(str)
  11.    Dim re_str1, re_str2
  12.    Set re = New RegExp
  13.    re.Pattern = "==DK_T(2)?=="
  14.    re.Global = True
  15.    re.IgnoreCase = True
  16.    If not re.Test(str) Then Exit Sub
  17.    Do Until RegEx(a)
  18.       a = InputBox("===输入编号[1~999]===",file.Name,"1")
  19.       If IsEmpty(a) Then Exit Sub
  20.    Loop
  21.    
  22.    re_str1 = Replace(str, "==DK_T==", "G43T" & a)
  23.    re_str2 = Replace(re_str1, "==DK_T2==", "M6H" & a & "Z100")
  24.    fso.OpenTextFile(file,2).Write re_str2
  25. End Sub

  26. Function RegEx(a)
  27.    Set reg = New RegExp
  28.    reg.Pattern = "^[1-9]\d{0,2}$"
  29.    RegEx = reg.Test(a)
  30. End function
复制代码

评分

参与人数 1技术 +1 收起 理由
lateol + 1 很好!

查看全部评分

 楼主| 发表于 2013-5-25 22:16:52 | 显示全部楼层
回复 8# apang


    呵呵 不管怎么样,我还是非常感谢你的。如果不喜欢提上你的名 以后低调就是。
 楼主| 发表于 2013-5-25 22:18:34 | 显示全部楼层
回复 9# suiyanlovetian
可以 就这样。值没自增+1
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 14:48 , Processed in 0.020463 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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