用vbs文件 或者bat文件 修改TXT文件 50
我有个文件a.txt内容大致是……(其他内容)<pr_code>*************</pr_code><pr_date>*************</pr_dat...
我有个文件 a.txt
内容大致是
……(其他内容)
<pr_code>*************</pr_code>
<pr_date>*************</pr_date>
……(其他内容)
*************为一串乱码,次次都不同的
我希望能运行一个批处理,能把a.txt文件的
<pr_code>一串乱码,次次都不同</pr_code>
<pr_date>一串乱码,次次都不同</pr_date>
变成:
<pr_code></pr_code>
<pr_date></pr_date>
其他内容不变,如何实现呢?
能用的答案再追加50分! 展开
内容大致是
……(其他内容)
<pr_code>*************</pr_code>
<pr_date>*************</pr_date>
……(其他内容)
*************为一串乱码,次次都不同的
我希望能运行一个批处理,能把a.txt文件的
<pr_code>一串乱码,次次都不同</pr_code>
<pr_date>一串乱码,次次都不同</pr_date>
变成:
<pr_code></pr_code>
<pr_date></pr_date>
其他内容不变,如何实现呢?
能用的答案再追加50分! 展开
展开全部
oFile = "D:\a.txt" '这里修改为你的文件路径
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(oFile, 1)
str = f.ReadAll
f.Close
Set objFile = fso.OpenTextFile(oFile,1)
do until objFile.atendofstream
strline=objFile.readline
if left(strline,9) = "<pr_code>" and right(strline,10) = "</pr_code>" then
str = replace(str,strline,left(strline,9)&right(strline,10))
ElseIf left(strline,10) = " <pr_date>" and right(strline,10) = "</pr_date>" then
str = replace(str,strline,left(strline,10)&right(strline,10))
end if
loop
objFile.close
Set f = fso.OpenTextFile(oFile, 2, True)
f.Write str
f.Close
————————
一楼的正则感觉有点不必要
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(oFile, 1)
str = f.ReadAll
f.Close
Set objFile = fso.OpenTextFile(oFile,1)
do until objFile.atendofstream
strline=objFile.readline
if left(strline,9) = "<pr_code>" and right(strline,10) = "</pr_code>" then
str = replace(str,strline,left(strline,9)&right(strline,10))
ElseIf left(strline,10) = " <pr_date>" and right(strline,10) = "</pr_date>" then
str = replace(str,strline,left(strline,10)&right(strline,10))
end if
loop
objFile.close
Set f = fso.OpenTextFile(oFile, 2, True)
f.Write str
f.Close
————————
一楼的正则感觉有点不必要
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
批处理只怕不行~~
网页多数是 utf-8 或者 gb2312编码,BAT无能为力。
网页多数是 utf-8 或者 gb2312编码,BAT无能为力。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
以下为vbs文件:
Const ForReading = 1, ForWriting = 2
Dim fso, f, oFile, str
oFile = "D:\a.txt" '这里修改为你的文件路径
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(oFile, ForReading)
str = f.ReadAll
f.Close
'MsgBox str
str = RegExpReplace("<pr_code>.+</pr_code>", str, "<pr_code></pr_code>")
str = RegExpReplace("<pr_date>.+</pr_date>", str, "<pr_date></pr_date>")
'MsgBox str
Set f = fso.OpenTextFile(oFile, ForWriting, True)
f.Write str
f.Close
Function RegExpReplace(patrn, strOrig, strReplace)
Dim regEx, Match, Matches ' Create variable.
Set regEx = New RegExp ' Create a regular expression.
regEx.Pattern = patrn ' Set pattern.
regEx.IgnoreCase = True ' Set case insensitivity.
regEx.Global = True ' Set global applicability.
RetStr = regEx.Replace(strOrig, strReplace)
Set regEx = Nothing
RegExpTest = RetStr
End Function
Const ForReading = 1, ForWriting = 2
Dim fso, f, oFile, str
oFile = "D:\a.txt" '这里修改为你的文件路径
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(oFile, ForReading)
str = f.ReadAll
f.Close
'MsgBox str
str = RegExpReplace("<pr_code>.+</pr_code>", str, "<pr_code></pr_code>")
str = RegExpReplace("<pr_date>.+</pr_date>", str, "<pr_date></pr_date>")
'MsgBox str
Set f = fso.OpenTextFile(oFile, ForWriting, True)
f.Write str
f.Close
Function RegExpReplace(patrn, strOrig, strReplace)
Dim regEx, Match, Matches ' Create variable.
Set regEx = New RegExp ' Create a regular expression.
regEx.Pattern = patrn ' Set pattern.
regEx.IgnoreCase = True ' Set case insensitivity.
regEx.Global = True ' Set global applicability.
RetStr = regEx.Replace(strOrig, strReplace)
Set regEx = Nothing
RegExpTest = RetStr
End Function
追问
str = RegExpReplace(".+", str, "")
'str = RegExpReplace(".+", str, "")
MsgBox str
这里运行到msgbox 显示是空白了
追答
函数名改了,返回值赋值的时候忘记也改过来了。。。汗!!
把 RegExpReplace 函数里最后一句:
RegExpTest = RetStr
改为:
RegExpReplace = RetStr
就行了。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询