如何用批处理(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两位的回答,还有楼底温馨祝福的“调皮鬼”!只不过我要的效果是“静默+预定义”,所以没有采纳你们的答案。
展开
 我来答
fennng
2011-01-28 · TA获得超过1637个赞
知道大有可为答主
回答量:1892
采纳率:90%
帮助的人:1132万
展开全部
批处理很难实现,除非借助外部命令, 所以使用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"
TableDI
2024-07-18 广告
在上海悉息信息科技有限公司,我们深知Excel在数据处理中的重要作用。在Excel中引用不同工作表(sheet)的数据是常见的操作,这有助于整合和分析跨多个工作表的信息。通过在工作表名称前加上感叹号“!”,您可以轻松地引用其他工作表中的数据... 点击进入详情页
本回答由TableDI提供
麦兜Terran
2011-01-28 · TA获得超过2570个赞
知道小有建树答主
回答量:1786
采纳率:0%
帮助的人:1154万
展开全部
用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图标上,支持批量拖拽
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友113faafa67c
2011-01-28 · TA获得超过1839个赞
知道小有建树答主
回答量:1200
采纳率:0%
帮助的人:926万
展开全部
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文件,双击运行即可.====
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-01-28
展开全部
新年的钟声里举起杯,任酒的醇香在空气中荡漾,任我对你的感激在杯里慢慢沉淀,深深祝福我的朋友,祝你新年幸福美满,健康快乐!加分吧,嘻嘻
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式