2013-10-10 48 views
1

我正在編輯現有.ini文件(nsapps.ini)的腳本。一切工作很好,但我不知道如何添加一個檢查到腳本,這將使它停止加入行,如果3線有VBS腳本編輯與行檢查

EpicTer78Class=9 
EpicTer79Class=9 
EpicTer81Class=9 

的EpicTer78Class = 9時在ini和現有線路其他2行應該在其後添加。我想添加這個檢查,所以如果腳本意外運行多了一次,它不會添加多行coppies。謝謝你的幫助(當我談到這個時,我是一個超級noob)。

'Begin Code for script 

Const ForReading = 1 
Const ForWriting = 2 

'Source file name here 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objTextFile = objFSO.OpenTextFile("C:\ProgramData\Nuance\NaturallySpeaking10\nsapps.ini", ForReading) 

Do Until objTextFile.AtEndOfStream 
    strNextLine = objTextFile.Readline 
'Line to find (changes go under this and replace line) 
    intLineFinder = InStr(strNextLine, "EpicTer78Class=9") 
    If intLineFinder <> 0 Then 
    'This is what replaces first line (above) 
     strNextLine = "EpicTer78Class=9" & vbCrLf & "EpicTer79Class=9" & vbCrLf & "EpicTer81Class=9" 
    End If 

    strNewFile = strNewFile & strNextLine & vbCrLf 
Loop 

objTextFile.Close 
'Source of file goes here again 
Set objTextFile = objFSO.OpenTextFile("C:\ProgramData\Nuance\NaturallySpeaking10\nsapps.ini", ForWriting) 

objTextFile.WriteLine strNewFile 
objTextFile.Close 
+0

我用Google搜索「VBSCRIPT添加一行ini文件」,這第一次來到了。有趣的是我正在處理與Epic + Dragon完全相同的兼容性修復程序!感謝開拓! – adipy

+0

真棒!很高興在這個網站上有用一次。我在麻雀隊的Sparrow Health工作,但不知何故最終成爲該計劃的管理員。 –

回答

2

假設三條線都應該出現在給定的順序,我建議是這樣的:

inifile = "C:\ProgramData\Nuance\NaturallySpeaking10\nsapps.ini" 

Set fso = CreateObject("Scripting.FileSystemObject") 

Set inFile = fso.OpenTextFile(inifile) 
Set outFile = fso.OpenTextFile(inifile & ".new", 2, True) 

prev = "" 
Do Until inFile.ATEndOfStream 
    curr = Trim(inFile.ReadLine) 
    If prev = "EpicTer78Class=9" And curr <> "EpicTer79Class=9" Then 
    outFile.WriteLine "EpicTer79Class=9" 
    prev = "EpicTer79Class=9" 
    End If 
    If prev = "EpicTer79Class=9" And curr <> "EpicTer81Class=9" Then 
    outFile.WriteLine "EpicTer81Class=9" 
    prev = "EpicTer81Class=9" 
    End If 
    outFile.WriteLine curr 
    prev = curr 
Loop 

inFile.Close 
outFile.Close 

fso.DeleteFile inifile, True 
fso.MoveFile inifile & ".new", inifile 
+0

非常感謝!作品完美。看起來有點複雜,然後我期待,但我可以看到它是如何工作的,我認爲.... 它是檢查上一行匹配它,然後如果匹配寫下一行?如果最後一行(81行)與它相符,則表示它完成了? 再次感謝你和幫助我瞭解更多一點。 –