标题: [问题求助] [已解决]麻烦修改个VBS替换文本的 [打印本页]
作者: lateol 时间: 2013-5-25 18:22 标题: [已解决]麻烦修改个VBS替换文本的
自己研究了很久 始终弄不懂这个替换的结构。- Dir = "==NC=="
- Set fso = CreateObject("Scripting.FileSystemObject")
-
- For Each file in fso.GetFolder(Dir).Files
- Ext = fso.GetExtensionName(file)
- If Lcase(Ext) = "nc" or Lcase(Ext) = "txt" _
- or Lcase(Ext) = "ncd" or Lcase(Ext) = "pim" Then
- ReplaceStr fso.OpenTextFile(file,1).ReadAll
- End If
- Next
-
- Sub ReplaceStr(str)
- Set re = New RegExp
- re.Pattern = "==DK_T=="
- re.Global = True
- re.IgnoreCase = True
- If not re.Test(str) Then Exit Sub
- Do Until RegEx(a)
- a = InputBox("===输入G43T编号[1~999]===",file.Name,"1")
- If IsEmpty(a) Then Exit Sub
- Loop
- fso.OpenTextFile(file,2).Write re.Replace(str,"G43T" & a)
- End Sub
-
- Function RegEx(a)
- Set reg = New RegExp
- reg.Pattern = "^[1-9]\d{0,2}$"
- RegEx = reg.Test(a)
- 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次 没一次替换中是直接查找两个字符串 然后替换成两个不同字符串,就是自定义输入框的数值的一样的。
谢谢。
作者: suiyanlovetian 时间: 2013-5-25 19:37
本帖最后由 suiyanlovetian 于 2013-5-25 19:42 编辑
听得不太明白。lz能否再详细讲讲。改起来很容易的。
作者: lateol 时间: 2013-5-25 20:21
本帖最后由 lateol 于 2013-5-25 20:28 编辑
回复 2# suiyanlovetian
也就是说 把文本 内包含的"==DK_T=="和"==DK_T2==字符串都分别替换为G43TXX 和 M6HXXZ100。 XX表示输入框内自定义要输入的值【1~999】
比如说 框内输入4 则 吧该文本内的"==DK_T=="和"==DK_T2==字符串替换成G43T4 和 M6H4Z100。 是同时替换。
作者: lateol 时间: 2013-5-25 20:29
回复 2# suiyanlovetian
呵呵 不好意思 错别字有点多 嘻嘻。改过来了
作者: suiyanlovetian 时间: 2013-5-25 20:40
嗯,我明白了,vbs稍微学了点,也不久,正好练练手、根据你说的,不麻烦的。我试试先哈~
作者: apang 时间: 2013-5-25 20:43
楼主哇,我这代码并非什么好代码,就不要贴在这里献丑了。。。
再说,要是我来做,我宁愿重新来做,也不愿意在别人代码上修修补补
再再说,您发错板块啦
作者: lateol 时间: 2013-5-25 20:51
回复 6# apang
好吧 那帮我重做一个 非常感谢,很简单 就是在 查找字符串哪里再加多一个。"==DK_T2== 替换为 M6H值Z100.
就等你的出现了。
作者: apang 时间: 2013-5-25 20:59
回复 7# lateol
为什么就认为我一定会帮你呢?你知道你这样说话会得罪好多好多人吗?
作者: suiyanlovetian 时间: 2013-5-25 21:42
- Dir = "==NC=="
- Set fso = CreateObject("Scripting.FileSystemObject")
-
- For Each file in fso.GetFolder(Dir).Files
- Ext = fso.GetExtensionName(file)
- If Lcase(Ext) = "nc" or Lcase(Ext) = "txt" _
- or Lcase(Ext) = "ncd" or Lcase(Ext) = "pim" Then
- ReplaceStr fso.OpenTextFile(file,1).ReadAll
- End If
- Next
-
- Sub ReplaceStr(str)
- Dim re_str1, re_str2
- Set re = New RegExp
- re.Pattern = "==DK_T(2)?=="
- re.Global = True
- re.IgnoreCase = True
- If not re.Test(str) Then Exit Sub
- Do Until RegEx(a)
- a = InputBox("===输入编号[1~999]===",file.Name,"1")
- If IsEmpty(a) Then Exit Sub
- Loop
-
- re_str1 = Replace(str, "==DK_T==", "G43T" & a)
- re_str2 = Replace(re_str1, "==DK_T2==", "M6H" & a & "Z100")
- fso.OpenTextFile(file,2).Write re_str2
- End Sub
-
- Function RegEx(a)
- Set reg = New RegExp
- reg.Pattern = "^[1-9]\d{0,2}$"
- RegEx = reg.Test(a)
- End function
复制代码
作者: lateol 时间: 2013-5-25 22:16
回复 8# apang
呵呵 不管怎么样,我还是非常感谢你的。如果不喜欢提上你的名 以后低调就是。
作者: lateol 时间: 2013-5-25 22:18
回复 9# suiyanlovetian
可以 就这样。值没自增+1
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |