2015-08-27 57 views
1

您好我已经尝试了很多研究,但无法找到我需要的东西,并且无法成功将它们拼凑在一起。替换文件中的文本

我的每个用户都在其配置文件中有一个我想要编辑的XML文件。该文件包含对其计算机名称和客户端名称的引用,每次登录到新终端时都会过时。我需要用当前计算机名和客户机名替换它们。我无法弄清楚该怎么做的是如何在我只知道前几个字符的情况下搜索XML的计算机名,然后将其替换。

我的XML会有任何条目是这样的 “InstalledPrinter NAME =” \ WHBCVDI0109 \ LabelPrinter650(从IGEL-00E0C533943E)”

我需要搜索的文件,并替换WHBCVDI0109和IGEL,00E0C533943E与。正确的条目我的脚本成功获取这些条目我只是不知道如何查找和替换文件中的他们

我的剧本是这样的:

Const ForReading = 1 
Const ForWriting = 2 

Set oShell = CreateObject("WScript.Shell") 

'Get Variables 
user=oShell.ExpandEnvironmentStrings("%UserName%") 
appdata=oShell.ExpandEnvironmentStrings("%appdata%") 
strComputerName = oshell.ExpandEnvironmentStrings("%COMPUTERNAME%") 


'Set XML location 
strfile = appdata & "\Smart Label Printer\SlpUserConfig.xml" 

'Open 
Set objfso = CreateObject("Scripting.FileSystemObject") 
Set filetxt = objfso.OpenTextFile(strfile, ForWriting) 


strTemp = "HKEY_LOCAL_MACHINE\SOFTWARE\Citrix\ICA\Session\ClientName" 
WScript.Echo "client name is : " & oShell.RegRead(strTemp) 

的指针将是非常APPR eciated。

回答

0

您不应该使用FileSystemObject和String/RegExp操作来编辑XML文件。使用规范工具 - msxml2.domdocument - 不易出错并且扩展性更好。

查看here举例(编辑文本);或here另一个(编辑属性)。

如果您发布(.XML文件的相关部分),我愿意在此处添加与您的用例相同的相同演示代码。

+0

XML文件将包含许多行,但那些我们关心的是这个样子的 \\ WHBCVDI0109 \ LabelPrinter650(从IGEL-00E0C533943E) \\ WHBCVDI0109 \ LabelPrinter650(从IGEL-00E0C533943E) stillavbsnewbie

+0

感谢本您的帮助迄今为止... – stillavbsnewbie

+0

看到为什么(XPath表达式查明材料编辑的第二个示例)以及如何发布简化/保留XML文件的基本结构版本。 –