如何用批处理(VBS也可)查找+修改文本文件的内容

2024-11-22 02:00:37
推荐回答(4个)
回答1:

批处理很难实现,除非借助外部命令, 所以使用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"

回答2:

用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图标上,支持批量拖拽

回答3:

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文件,双击运行即可.====

回答4:

新年的钟声里举起杯,任酒的醇香在空气中荡漾,任我对你的感激在杯里慢慢沉淀,深深祝福我的朋友,祝你新年幸福美满,健康快乐!加分吧,嘻嘻