用VBScript查找并替换我的文本中的字符串
我正在搜索在文件(例如1.txt 2.xml)中执行搜索和替换的VBScript。 我有一个文件“1.txt”,里面有“临时”一词,我想把它改成“永久”。 因为我经常收到这个文件,所以我需要一个脚本 每次我试图编写一个包含opentxt文件和replace命令的脚本时,它都不会 我找到了一个脚本,可以用另一个文件更改此文件,并在其中进行更改,但这不是我要查找的内容。试试这个用VBScript查找并替换我的文本中的字符串,vbscript,Vbscript,我正在搜索在文件(例如1.txt 2.xml)中执行搜索和替换的VBScript。 我有一个文件“1.txt”,里面有“临时”一词,我想把它改成“永久”。 因为我经常收到这个文件,所以我需要一个脚本 每次我试图编写一个包含opentxt文件和replace命令的脚本时,它都不会 我找到了一个脚本,可以用另一个文件更改此文件,并在其中进行更改,但这不是我要查找的内容。试试这个 If WScript.Arguments.Count <> 3 then WScript.Echo "us
If WScript.Arguments.Count <> 3 then
WScript.Echo "usage: Find_And_replace.vbs filename word_to_find replace_with "
WScript.Quit
end If
FindAndReplace WScript.Arguments.Item(0), WScript.Arguments.Item(1), WScript.Arguments.Item(2)
WScript.Echo "Operation Complete"
function FindAndReplace(strFilename, strFind, strReplace)
Set inputFile = CreateObject("Scripting.FileSystemObject").OpenTextFile(strFilename, 1)
strInputFile = inputFile.ReadAll
inputFile.Close
Set inputFile = Nothing
Set outputFile = CreateObject("Scripting.FileSystemObject").OpenTextFile(strFilename,2,true)
outputFile.Write Replace(strInputFile, strFind, strReplace)
outputFile.Close
Set outputFile = Nothing
end function
*此方法区分大小写“This”!=“这个”
如果不想将整个文件读入内存,可以使用这样的临时文件
[C:\]> Find_And_Replace.vbs "C:\1.txt" "temporary" "permanent"
If WScript.Arguments.Count <> 3 then
WScript.Echo "usage: Find_And_replace.vbs filename word_to_find replace_with "
WScript.Quit
end If
FindAndReplace WScript.Arguments.Item(0), WScript.Arguments.Item(1), WScript.Arguments.Item(2)
WScript.Echo "Operation Complete"
function FindAndReplace(strFile, strFind, strReplace)
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objInputFile = objFSO.OpenTextFile(strFile,1)
strTempDir = objFSO.GetSpecialFolder(2)
Set objTempFile = objFSO.OpenTextFile(strTempDir & "\temp.txt",2,true)
do until objInputFile.AtEndOfStream
objTempFile.WriteLine(Replace(objInputFile.ReadLine, strFind, strReplace))
loop
objInputFile.Close
Set objInputFile = Nothing
objTempFile.Close
Set objTempFile = Nothing
objFSO.DeleteFile strFile, true
objFSO.MoveFile strTempDir & "\temp.txt", strFile
Set objFSO = Nothing
end function
如果WScript.Arguments.Count为3,则
Echo“用法:查找和替换.vbs文件名word到查找替换”
WScript.Quit
如果结束
查找并替换WScript.Arguments.Item(0)、WScript.Arguments.Item(1)、WScript.Arguments.Item(2)
Echo“操作完成”
函数find和replace(strFile、strFind、strReplace)
设置objFSO=CreateObject(“Scripting.FileSystemObject”)
设置objInputFile=objFSO.OpenTextFile(strFile,1)
strTempDir=objFSO.GetSpecialFolder(2)
设置objTempFile=objFSO.OpenTextFile(strTempDir&“\temp.txt”,2,true)
直到objInputFile.AtEndOfStream
objTempFile.WriteLine(替换(objInputFile.ReadLine、strFind、strReplace))
环
objInputFile.Close
设置objInputFile=Nothing
objTempFile.Close
Set objTempFile=Nothing
objFSO.DeleteFile strFile,true
objFSO.MoveFile strTempDir&“\temp.txt”,strFile
设置objFSO=Nothing
端函数
您可以尝试此版本,它不会将整个文件拖到内存中:
Set objFS = CreateObject("Scripting.FileSystemObject")
strFile=WScript.Arguments.Item(0)
strOld=WScript.Arguments.Item(1)
strNew=WScript.Arguments.Item(2)
Set objFile = objFS.OpenTextFile(strFile)
Do Until objFile.AtEndOfStream
strLine = objFile.ReadLine
if Instr(strLine,strOld)> 0 Then
strLine=Replace(strLine,strOld,strNew)
End If
WScript.Echo strLine
Loop
用法:
c:\test> cscript //nologo find_replace.vbs file oldtext newtext
这不会更改文件。我之所以将整个文件“slurp”到内存中,是因为我可以将更改写回同一个文件。非常感谢,它非常漂亮和有创意,这就是我想要的。新年快乐。您好,我有时对脚本有问题,我遇到问题的文件包括“”,在我尝试替换的单词之前的文件中(即“此航班号为“临时”。以及结束的文件。配置我没有收到任何错误(操作完成)喜欢成功,所以很难知道问题出在哪里。知道为什么或者如何解决它吗?RegardsIt通常会感谢提供正确答案的用户,将他们的答案标记为接受答案。我已经使用扩展名为.config的文件测试了脚本,该文件包含您在评论中提供的示例文本,以及我没有遇到任何问题。我不确定您是如何使用该脚本的,但在“在命令行中键入命令时,不要包含”简单地键入Find_和_Replace.vbs“C:\1.txt”“temporary”“permanent”。而不是Find_和_Replace.vbs“C:\1.txt”“temporary”“permanent”。您还可以尝试将FindAndReplace函数“Set-inputFile=CreateObject(“Scripting.FileSystemObject”).OpenTextFile(strFilename,1)”中的第一行更改为“Set-inputFile=CreateObject(“Scripting.FileSystemObject”).OpenTextFile(strFilename,1,true,0)”。如果不起作用,请尝试将这一行更改为“outputFile.Write Replace”(strInputFile,strFind,strReplace)”使用此“outputFile.Write Replace(strInputFile,strFind,strReplace,1,-1,1)”记住,Replace函数返回被替换的文本,它不会修改传递给它的变量。