2015-08-27 86 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文件的基本結構版本。 –