Vbscript 如何替换txt文件中的文本和符号?

Vbscript 如何替换txt文件中的文本和符号?,vbscript,Vbscript,我有一个web.config文件,要更改设置,我必须手动进入并不断更改代码 到目前为止,我发现了一个我正在尝试改编的示例脚本: Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.OpenTextFile("C:\Scripts\Text.txt", ForReading) strText = objFile.ReadAll objFile.Close strNewText = Replace

我有一个
web.config
文件,要更改设置,我必须手动进入并不断更改代码

到目前为止,我发现了一个我正在尝试改编的示例脚本:

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("C:\Scripts\Text.txt", ForReading)

strText = objFile.ReadAll
objFile.Close
strNewText = Replace(strText, "Jim ", "James ")

Set objFile = objFSO.OpenTextFile("C:\Scripts\Text.txt", ForWriting)
objFile.WriteLine strNewText
objFile.Close 
我的问题是我需要改变符号而不是文字,我认为这会把事情搞砸

因此,如果上面说的是
James
Jim
,我的数据将发生变化:

"<component type="Satsuma.Connectivity.Services.Contracts.Mocks.CallCredit.CallCreditCallValidateServiceProxyMock, Satsuma.Connectivity.Services.Contracts.Mocks" service="Satsuma.Connectivity.Services.Contracts.CallCredit.ICallCreditCallValidateService, Satsuma.Connectivity.Services.Contracts" /> ",
“”,
为此:

"<!--<component type="Satsuma.Connectivity.Services.Contracts.Mocks.CallCredit.CallCreditCallValidateServiceProxyMock, Satsuma.Connectivity.Services.Contracts.Mocks" service="Satsuma.Connectivity.Services.Contracts.CallCredit.ICallCreditCallValidateService, Satsuma.Connectivity.Services.Contracts" />-->",)
”,)

反之亦然。如果您查看,则只需要编辑开始和结束符号(例如
)。

可以这样做一个简单的字符串替换(出于可读性原因,将大量属性值缩写为):

srch=“”
repl=“”
strNewText=Replace(strText,srch,repl)
请注意,VBScript字符串中的嵌套双引号必须加倍才能转义。如果不使用双引号,字符串将过早终止,很可能会出现语法错误

这么说来,用字符串替换来修改
web.config
文件是个坏主意™, 因为它们是XML文件,在XML中,以下任何符号之间都没有区别:


你真正想做的是使用一个。类似这样的事情应该做(代码不知羞耻地从中窃取):

config=“C:\path\to\your\web.config”
设置xml=CreateObject(“Msxml2.DOMDocument.6.0”)
xml.async=False
xml.load配置
如果xml.parseError为0,则
WScript.Echo xml.parseError.reason
WScript.Quit 1
如果结束
设置node=xml。选择singlenode(//component[@type='Sats…ocks'])
Set comment=xml.createComment(node.xml)
node.parentNode.replaceChild(注释,节点)
xml.save配置

可以这样做一个简单的字符串替换(出于可读性原因,将大量属性值缩写为):

srch=“”
repl=“”
strNewText=Replace(strText,srch,repl)
请注意,VBScript字符串中的嵌套双引号必须加倍才能转义。如果不使用双引号,字符串将过早终止,很可能会出现语法错误

这么说来,用字符串替换来修改
web.config
文件是个坏主意™, 因为它们是XML文件,在XML中,以下任何符号之间都没有区别:


你真正想做的是使用一个。类似这样的事情应该做(代码不知羞耻地从中窃取):

config=“C:\path\to\your\web.config”
设置xml=CreateObject(“Msxml2.DOMDocument.6.0”)
xml.async=False
xml.load配置
如果xml.parseError为0,则
WScript.Echo xml.parseError.reason
WScript.Quit 1
如果结束
设置node=xml。选择singlenode(//component[@type='Sats…ocks'])
Set comment=xml.createComment(node.xml)
node.parentNode.replaceChild(注释,节点)
xml.save配置

可以这样做一个简单的字符串替换(出于可读性原因,将大量属性值缩写为):

srch=“”
repl=“”
strNewText=Replace(strText,srch,repl)
请注意,VBScript字符串中的嵌套双引号必须加倍才能转义。如果不使用双引号,字符串将过早终止,很可能会出现语法错误

这么说来,用字符串替换来修改
web.config
文件是个坏主意™, 因为它们是XML文件,在XML中,以下任何符号之间都没有区别:


你真正想做的是使用一个。类似这样的事情应该做(代码不知羞耻地从中窃取):

config=“C:\path\to\your\web.config”
设置xml=CreateObject(“Msxml2.DOMDocument.6.0”)
xml.async=False
xml.load配置
如果xml.parseError为0,则
WScript.Echo xml.parseError.reason
WScript.Quit 1
如果结束
设置node=xml。选择singlenode(//component[@type='Sats…ocks'])
Set comment=xml.createComment(node.xml)
node.parentNode.replaceChild(注释,节点)
xml.save配置

可以这样做一个简单的字符串替换(出于可读性原因,将大量属性值缩写为):

srch=“”
repl=“”
strNewText=Replace(strText,srch,repl)
请注意,VBScript字符串中的嵌套双引号必须加倍才能转义。如果不使用双引号,字符串将过早终止,很可能会出现语法错误

这么说来,用字符串替换来修改
web.config
文件是个坏主意™, 因为它们是XML文件,在XML中,以下任何符号之间都没有区别:


你真正想做的是使用一个。类似这样的事情应该做(代码不知羞耻地从中窃取):

config=“C:\path\to\your\web.config”
设置xml=CreateObject(“Msxml2.DOMDocument.6.0”)
xml.async=False
xml.load配置
如果xml.parseError为0,则
WScript.Echo xml.parseError.reason
WScript.Quit 1
如果结束
设置node=xml。选择singlenode(//component[@type='Sats…ocks'])
Set comment=xml.createComment(node.xml)
node.parentNode.replaceChild(注释,节点)
xml.save配置
所有
内部
双引号应为
双引号,如下所示:

replWhat = "<component type=""Satsuma..Mocks"" service=""Satsuma..Contracts"" />"
'                           ^               ^          ^                   ^
replWith = "<!--" & replWhat & "-->" 

strNewText = Replace(strText, replWhat, replWith, 1, -1, vbTextCompare)

'and vice versa'
strOldText = Replace(strNewText, replWith, replWhat, 1, -1, vbTextCompare)
replWhat=“”
'                           ^               ^          ^                   ^
replWith=“”
strNewText=Replace(strText,replWhat,replWith,1,-1,vbTextCompare)
‘反之亦然’
strOldText=Replace(strNewText,replWith,replWhat,1,-1,vbTextCompare)
在给定的示例中,文本被缩短,以使命令保持合理的宽度,从而提高可读性

阅读以了解
Replace
函数的附加
、1、-1、vbTextCompare
参数的含义。

所有
内部
双引号应为
双引号,如下所示:

replWhat = "<component type=""Satsuma..Mocks"" service=""Satsuma..Contracts"" />"
'                           ^               ^          ^                   ^
replWith = "<!--" & replWhat & "-->" 

strNewText = Replace(strText, replWhat, replWith, 1, -1, vbTextCompare)

'and vice versa'
strOldText = Replace(strNewText, replWith, replWhat, 1, -1, vbTextCompare)
replWhat=“”
'                           ^               ^