标题: [问题求助] 求助---VBS 替换或删除 INF 文件中第二个相同字符串 [打印本页]
作者: yuanyannian 时间: 2014-11-22 11:55 标题: 求助---VBS 替换或删除 INF 文件中第二个相同字符串
是 Unicode 格式 (也可能是 ANSI 格式) 的 inf 文件(见附件),其中有两个 "[Strings]"
1. 如何通过 vbs 将第二个(一定要第二个)删除或替换为其它任意字符串。
2. 假设含两个 [Strings] 的 inf 文件不只这一个,而且有的 inf 中只有一个 [Strings],如何先判断:如果含有两个,就处理,否则,不做处理?
要求:保存为 Unicode 格式,文件中其它内容不变。
作者: CrLf 时间: 2014-11-22 16:36
可以用 sed 吗?
作者: yuanyannian 时间: 2014-11-22 16:41
回复 2# CrLf
最好不用 sed。
作者: yuanyannian 时间: 2014-11-23 18:54
难道这个问题 VBS 不能解决吗?
apang 老师帮个忙啊!
作者: yuanyannian 时间: 2014-11-23 19:26
难道这个问题 VBS 不能解决吗?
apang 老师帮个忙啊!
作者: apang 时间: 2014-11-23 21:07
附件都传错了,搞什么搞
如果是ansi 编码,把 -1 改成 0- Set fso = Createobject("Scripting.FileSystemObject")
- txt = fso.OpenTextFile("HIVECLS.INF", 1, false, -1).ReadAll
-
- Set re = New RegExp
- re.Pattern = "(\[Strings])([\s\S]+?)\1"
- re.IgnoreCase = true
- txt = re.Replace(txt, "$1$2")
-
- fso.OpenTextFile("New.inf", 2, true, -1).Write txt
复制代码
作者: yuanyannian 时间: 2014-11-24 06:23
回复 6# apang
谢谢了。
附件传错了吗?我点击下载可以呀。
作者: yuanyannian 时间: 2014-11-24 07:57
回复 6# apang
好用,谢谢 apang 老师!!
问题又来了,假设含两个 [Strings] 的 inf 文件不只这一个,而且有的 inf 中只有一个 [Strings],如何先判断:如果含有两个,就处理,否则,不做处理?
作者: apang 时间: 2014-11-24 16:28
回复 7# yuanyannian
附件不是 unicode 编码格式
作者: apang 时间: 2014-11-24 16:29
回复 8# yuanyannian
如果还有其它问题,请更新顶楼内容,或重新发帖
作者: yuanyannian 时间: 2014-11-24 17:16
回复 10# apang
已经更新了顶楼,请老师看一下,谢谢。
作者: apang 时间: 2014-11-24 19:55
- Set fso = Createobject("Scripting.FileSystemObject")
- For Each file in fso.GetFolder(".").Files
- If LCase(Right(file, 4)) = ".inf" Then
- RegEx file, GetInfFormat(file)
- End If
- Next
-
- MsgBox "OK"
-
- Function GetInfFormat(ByVal file)
- With CreateObject("ADODB.Stream")
- .Mode = 3
- .Type = 1
- .Open
- .LoadFromFile file
- bin = .Read(2)
- End With
- s = Hex(AscB(MidB(bin, 1, 1))) & Hex(AscB(MidB(bin, 2)))
- If UCase(s) = "FEFF" or UCase(s) = "FFFE" Then
- GetInfFormat = -1
- Else GetInfFormat = 0
- End If
- End Function
-
- Sub RegEx(ByVal file, intFormat)
- Set f = fso.OpenTextFile(file, 1, false, intFormat)
- txt = f.ReadAll : f.Close
- Set re = New RegExp
- re.Pattern = "(\[Strings])([\s\S]+?)\1"
- re.IgnoreCase = true
- If Not re.Test(txt) Then Exit Sub
- Set f = fso.OpenTextFile("New_" & file.Name, 2, true, -1)
- f.Write re.Replace(txt, "$1$2") : f.Close
- End Sub
复制代码
作者: yuanyannian 时间: 2014-11-24 21:31
回复 12# apang
太复杂了,aoang 老师新辛苦,谢谢!
作者: CrLf 时间: 2014-11-25 01:03
回复 13# yuanyannian
apang 的技术分即将超越本人,看这恐怖的进度,我的第一大概只能保持一两周了
酷爱来酷爱来,给亲爱的 apang 老师加分助攻
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |