2009-05-20 13 views
2

このスクリプトは、2つの値を1つではなく同じテキストファイルに置き換えます。しかし、私が行12のコメントを外すと、スクリプトが壊れます。これをループにしなければならないのですか、それとも複数回置き換えてもいいですか?最初に置き換えるvbscriptはテキストを置き換えます - 1つは2つのすべてを中断します

strNewText = Replace(strText, "***COMPNAME***", strCompname) 
strNewText = Replace(strNewText , "***Winkey***", strPoductkey) 

は、そうでなければ、あなたが失うことになる、とだけ二番目はで表示されます。

Sub ReplaceTxt() 
'Writes values we got earlier to our unattend file  ' 
Const ForReading = 1 
Const ForWriting = 2 

    Set objFSO = CreateObject("Scripting.FileSystemObject") 
    Set objFile = objFSO.OpenTextFile(strSIFpath, ForReading) 

    strText = objFile.ReadAll 
    objFile.Close 
    strNewText = Replace(strText, "***COMPNAME***", strCompname) 
' strNewText = Replace(strText, "***Winkey***", strPoductkey) ' 

    Set objFile = objFSO.OpenTextFile("C:\$WIN_NT$.~BT\winnt.sif", ForWriting) 
    objFile.WriteLine strNewText 
    objFile.Close 
End Sub 
+0

あなたはそれぞれの交換品をプリントアウトすることを明確にしておく必要があります。そうしないと、両方を同時に交換してプリントアウトする場合Frederikのコードがうまくいくはずです。 – Malachi

答えて

6

は、私はあなたが第1、第2いずれかによって返された文字列に置き換えやりたいだろうと思います結果。

0

これを試してみてください:

Sub ReplaceTxt() 'Writes values we got earlier to our unattend file' 
    Const ForReading = 1 
    Const ForWriting = 2 

    Set objFSO = CreateObject("Scripting.FileSystemObject") 
    Set objFile = objFSO.OpenTextFile(strSIFpath, ForReading) 

    strText = objFile.ReadAll 
    objFile.Close 

    strText = Replace(strText, "COMPNAME", strCompname) 
    strText = Replace(strText, "Winkey", strPoductkey) 

    Set objFile = objFSO.OpenTextFile("C:\$WIN_NT$.~BT\winnt.sif", ForWriting) 
    objFile.WriteLine strText 
    objFile.Close 
End Sub 

それをあなたがした方法を行うことによって、あなたは第二をしたときに最初置き換える上書きし、二度の元、未使用のテキストを使用していました。

+0

objFile.WriteLine strNewTextはstrTextである必要があります – AnthonyWJones

+0

ありがとう - コーヒーの瞬間の欠如。 :D – AnonJr

+0

これらはどちらも同じことを行い、最初は置き換え、2番目は空白です。 – Travis

0

私は私の文がそこに本物のプログラマーに醜いですが、ここで私はそれが

Sub ReplaceTxt() 'Writes values we got earlier to our unattend file' 
    Const ForReading = 1 
    Const ForWriting = 2 
    counter = 1 

    For Each searchterm In Array("COMPNAME", "Winkey") 
     Set objFSO = CreateObject("Scripting.FileSystemObject") 
     Set objFile = objFSO.OpenTextFile(strSIFpath, ForReading) 

     strText = objFile.ReadAll 
     objFile.Close 

     If counter < 2 Then 
     strText = Replace(strText, searchterm, strCompname) 
     Else 
     strText = Replace(strText, searchterm, strProductKey) 
     End If 

     Set objFile = objFSO.OpenTextFile("C:\$WIN_NT$.~BT\winnt.sif", ForWriting) 
     objFile.WriteLine strText 
     objFile.Close 
     counter = counter + 1 
    Next 
End Sub 
0

まあ..ザッツ簡単..ブエノNIのタントを動作するようになった方法です場合..私はしようとしていたと確信していますこれを行うにはしばらく時間がかかる。私は答えを見つけました:

Sub ReplaceTxt() 
'Writes values we got earlier to our unattend file  ' 
Const ForReading = 1 
Const ForWriting = 2 

Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objFile = objFSO.OpenTextFile(strSIFpath, ForReading) 

strText = objFile.ReadAll 
objFile.Close 
strNewText = Replace(strText, "***COMPNAME***", strCompname) 
strNewText2 = Replace(strNewText, "***Winkey***", strPoductkey) ' 

Set objFile = objFSO.OpenTextFile("C:\$WIN_NT$.~BT\winnt.sif", ForWriting) 
objFile.WriteLine strNewText2 
objFile.Close 
End Sub 

Tanks、Gracias JoséVillaからCuliacán、Sinaloa Mexico

関連する問題