如何用批处理(VBS也可)查找+修改文本文件的内容
如何用批处理(VBS也可)查找+修改文本文件的内容最好不只限于文本文件,其它文件比如.htm,.asp之类的文件也可以查找并修改。比如C:\有22.TXT(或22.ASP...
如何用批处理(VBS也可)查找+修改文本文件的内容
最好不只限于文本文件,其它文件比如.htm,.asp之类的文件也可以查找并修改。
比如C:\有22.TXT(或22.ASP)文件,里面内容为:
1111
2kjllk
89809
446dhddl
如何实现先用批处理(或VBS),先查找22.TXT(或22.ASP)文件的内容里是否包含"dhd"(我这里只是举例,实际中有可能查找的是别的内容),如果包含,则把"dhd" "修改为"mmm"。
因为要实现“静默”修改,所以:要查找的内容"dhd"+查找到以后要替换的内容"mmm",最好是在批处理(或VBS)里预定义好的,这样只要双击运行批处理就可以修改完成。
我分不多,不好意思。知道的朋友还请不吝赐教,权当学习交流。谢谢!!
非常感谢 fennng,在此还有几个小小的疑问:假如我要修改的内容原本就包含有""(引号),假如要修改的内容是LL="QQ",要换成LL="WW",那么这一句sSub = replace(sSub, "dhd", "mmmm")Y应该怎么写?直接写成
sSub = replace(sSub, "LL="QQ"", "LL="WW"")是会出错的。
在此也特别感谢 麦兜Terran, odouaa两位的回答,还有楼底温馨祝福的“调皮鬼”!只不过我要的效果是“静默+预定义”,所以没有采纳你们的答案。 展开
最好不只限于文本文件,其它文件比如.htm,.asp之类的文件也可以查找并修改。
比如C:\有22.TXT(或22.ASP)文件,里面内容为:
1111
2kjllk
89809
446dhddl
如何实现先用批处理(或VBS),先查找22.TXT(或22.ASP)文件的内容里是否包含"dhd"(我这里只是举例,实际中有可能查找的是别的内容),如果包含,则把"dhd" "修改为"mmm"。
因为要实现“静默”修改,所以:要查找的内容"dhd"+查找到以后要替换的内容"mmm",最好是在批处理(或VBS)里预定义好的,这样只要双击运行批处理就可以修改完成。
我分不多,不好意思。知道的朋友还请不吝赐教,权当学习交流。谢谢!!
非常感谢 fennng,在此还有几个小小的疑问:假如我要修改的内容原本就包含有""(引号),假如要修改的内容是LL="QQ",要换成LL="WW",那么这一句sSub = replace(sSub, "dhd", "mmmm")Y应该怎么写?直接写成
sSub = replace(sSub, "LL="QQ"", "LL="WW"")是会出错的。
在此也特别感谢 麦兜Terran, odouaa两位的回答,还有楼底温馨祝福的“调皮鬼”!只不过我要的效果是“静默+预定义”,所以没有采纳你们的答案。 展开
4个回答
展开全部
批处理很难实现,除非借助外部命令, 所以使用VBS
不懂你的文件是什么编码的,我就当ANSI处理了
文件放在和你要处理的文件同一目录。 会生成一个新文件, 这样比较安全, 不过你可以把 new_ 去掉, 就会复盖原文件。
这样使用
cscript do.vbs
双击也是可以啦。
以下VBS代码存为 do.vbs
function ReadAsciiFile(ByVal strFileName)
ReadAsciiFile = ReadFile(strFileName, 0)
end function
function ReadFile(ByVal strFileName, ByVal numCharSet)
dim file
if objFS.FileExists(strFileName) then
set file = objFS.OpenTextFile(strFileName, 1, false, numCharSet)
dim sText
sText = file.ReadAll
ReadFile = sText
file.close
end if
set file = nothing
end function
sub String2File(ByVal strFileName, ByVal strS)
dim fileWriter
set fileWriter = objFS.CreateTextFile(strFileName, True, false)
fileWriter.Write strS
fileWriter.close
set fileWriter = nothing
end sub
dim objFS
set objFS = CreateObject("Scripting.FileSystemObject")
dim fileName
fileName = "22.txt"
dim sSub
sSub = ReadAsciiFile(fileName)
sSub = replace(sSub, "dhd", "mmmm")
String2File "new_" & fileName,sSub
wsh.echo "done"
不懂你的文件是什么编码的,我就当ANSI处理了
文件放在和你要处理的文件同一目录。 会生成一个新文件, 这样比较安全, 不过你可以把 new_ 去掉, 就会复盖原文件。
这样使用
cscript do.vbs
双击也是可以啦。
以下VBS代码存为 do.vbs
function ReadAsciiFile(ByVal strFileName)
ReadAsciiFile = ReadFile(strFileName, 0)
end function
function ReadFile(ByVal strFileName, ByVal numCharSet)
dim file
if objFS.FileExists(strFileName) then
set file = objFS.OpenTextFile(strFileName, 1, false, numCharSet)
dim sText
sText = file.ReadAll
ReadFile = sText
file.close
end if
set file = nothing
end function
sub String2File(ByVal strFileName, ByVal strS)
dim fileWriter
set fileWriter = objFS.CreateTextFile(strFileName, True, false)
fileWriter.Write strS
fileWriter.close
set fileWriter = nothing
end sub
dim objFS
set objFS = CreateObject("Scripting.FileSystemObject")
dim fileName
fileName = "22.txt"
dim sSub
sSub = ReadAsciiFile(fileName)
sSub = replace(sSub, "dhd", "mmmm")
String2File "new_" & fileName,sSub
wsh.echo "done"
展开全部
用vbs吧
bat替换字符串能力有限
function change(x,y)
for each i in wscript.arguments
file=trim(replace(i,"""",""))
filelist=createobject("scripting.filesystemobject").opentextfile(file).readall
change=replace(filelist,x,y)
next
end function
createobject("scripting.filesystemobject").createtextfile("new.txt").writeline change("k","m")
'将k替换为m,拖拽文件到vbs图标上,支持批量拖拽
bat替换字符串能力有限
function change(x,y)
for each i in wscript.arguments
file=trim(replace(i,"""",""))
filelist=createobject("scripting.filesystemobject").opentextfile(file).readall
change=replace(filelist,x,y)
next
end function
createobject("scripting.filesystemobject").createtextfile("new.txt").writeline change("k","m")
'将k替换为m,拖拽文件到vbs图标上,支持批量拖拽
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Dim fso
Set fso = CreateObject("scripting.filesystemobject")
Set fdr=fso.GetFolder(".\")
Set subfdr=fdr.SubFolders
For Each f In subfdr
ff=f.Name&"\1.bat"
If fso.FileExists(ff) Then
Set batfile=fso.OpenTextFile(ff)
If Not batfile.AtEndOfStream then
txt=batfile.ReadAll
batfile.Close
lines=Split(txt,vbCrLf)
Dim tmpstr : tmpstr=""
For Each l In lines
If Len(l)>0 then
strs=Split(l,"=")
tmpstr=tmpstr&strs(0)&"=0"&vbCrLf
End if
Next
Set batfile=fso.OpenTextFile(ff,2)
batfile.Write tmpstr
batfile.Close
End If
End if
Next
MsgBox "work is done",64,"INFO"
'==============将以上代码保存为xx.vbs文件,双击运行即可.====
Set fso = CreateObject("scripting.filesystemobject")
Set fdr=fso.GetFolder(".\")
Set subfdr=fdr.SubFolders
For Each f In subfdr
ff=f.Name&"\1.bat"
If fso.FileExists(ff) Then
Set batfile=fso.OpenTextFile(ff)
If Not batfile.AtEndOfStream then
txt=batfile.ReadAll
batfile.Close
lines=Split(txt,vbCrLf)
Dim tmpstr : tmpstr=""
For Each l In lines
If Len(l)>0 then
strs=Split(l,"=")
tmpstr=tmpstr&strs(0)&"=0"&vbCrLf
End if
Next
Set batfile=fso.OpenTextFile(ff,2)
batfile.Write tmpstr
batfile.Close
End If
End if
Next
MsgBox "work is done",64,"INFO"
'==============将以上代码保存为xx.vbs文件,双击运行即可.====
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-01-28
展开全部
新年的钟声里举起杯,任酒的醇香在空气中荡漾,任我对你的感激在杯里慢慢沉淀,深深祝福我的朋友,祝你新年幸福美满,健康快乐!加分吧,嘻嘻
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询