2017-04-05 72 views
0

使用下面的代碼我能夠在每行的開頭添加;,但是我想在找到特定單詞後添加;,例如, [Abc]。如何使用VBScript來做到這一點?我想搜索特定的單詞,然後在每一行我想添加的單詞之後;在開始

Const ForReading=1 
Const ForWriting=2 

Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set f = objFSO.OpenTextFile("D:\sam.txt", ForReading) 

Do Until f.AtEndOfStream 
    strText = f.ReadLine 
    If Len(strText) = 0 Then 
     blnFound = True 
     MsgBox "blank line found" 
     strText = vbNewLine & strText 
     strContents = strContents & strText & vbCrlf 
    Else 
     strText = ";" & strText 
     strContents = strContents & strText & vbCrlf 
    End If 
Loop 

f.Close 

Set f = objFSO.OpenTextFile("D:\sam.txt", Forwriting) 
f.WriteLine strContents 
f.Close 

Sam.txt包含一些行,例如,

 
Hi, need help 
This is a sample text file 
[Abc] 
How are you 
Hope you are doing well! 

所以我想輸出sam.txt文件應該有下面的數據裏面:

 
Hi, need help 
This is a sample text file 
[Abc] 
;How are you 
;Hope you are doing well! 
+0

取代它; 'strText =替換(strText,「[Abc]」,「[Abc];」)' –

+0

謝謝你回覆我的帖子,但我想要下面的輸出。 Sam.txt是含有某些行e.g 嗨,需要幫助 這是一個示例文本文件 [ABC] 你怎麼 希望你做得很好! 所以我想輸出sam.txt文件應具有以下里面的數據: - 嗨,需要幫助 這是一個簡單的文本文件 [ABC] ;你怎麼樣 ,希望你做得很好! – sam

回答

0

所以,基本上,你有一個INI風格文件,並希望在一個特定部分的條目評論。可以實現這樣的:

filename = "D:\sam.txt" 

Set fso = CreateObject("Scripting.FileSystemObject") 

txt = Split(fso.OpenTextFile(filename).ReadAll, vbNewLine) 

disable = False 
For i = 0 To UBound(txt) 
    If Left(txt(i), 1) = "[" Then 
    If txt(i) = "[Abc]" Then 
     disable = True 
    Else 
     disable = False 
    End If 
    End If 

    If disable Then txt(i) = ";" & txt(i) 
Next 

fso.OpenTextFile(filename, 2).Write Join(txt, vbNewLine) 
+0

是的,你是對的..但事情是,有多個文件,並在一個文件中存在多個部分,我想根據該特定文件的要求評論特定部分。可以幫助我弄清楚如何搜索特定部分並註釋掉該部分。謝謝。 – sam

+0

我發佈的示例代碼應該已經這樣做了。 –

+0

是的,但每次文件名和部分名稱不同,所以我希望它通過cmd或輸入對話框從用戶接受。但我沒有得到它如何在腳本中使用輸入框。 strAns1 =的InputBox(「請爲您的新文件輸入一個名稱:」) Wscript.Echo strAns1 strAns2 =的InputBox(「請輸入部分名稱」) Wscript.Echo strAns2 – sam

0

試試這個

Option Explicit 

Dim FSO ' Object 

Set FSO = CreateObject("Scripting.FileSystemObject") 

Dim ReadTxtFile, WriteTxtFile ' Object 
Dim TextLine, TextLineToWrite ' String 
Dim AddStr' bool 

' Open both text file in the same time 
Set ReadTextFile = FSO.OpenTextFile("Sam.txt", 1) ' Open file to read 
Set WriteTextFile = FSO.OpenTextFile("Sam_new.txt", 2, True) ' Open file to write 

' Do read file as normal but add a switch 
' Write original text line to text file while switch is disabled 
' Add str to the text line and write once switch is trigger 

AddStr = False ' Add str disabled 
Do Until ReadTextFile.AtEndOfStream ' Start Read 

    Textline = ReadTextFile.Readline 

    If AddStr = True Then ' If add str enabled 
     TextLineToWrite = ";" & Textline ' Add string 
    Else ' if add str disabled 
     TextLineToWrite = Textline ' write original line 
    End If 

    If Trim(Textline) = "[ABC]" Then ' If indicator read 
     AddStr = True ' add str write 
    End if 

    WriteTextFile.WriteLine TextLineToWrite ' Write file when each line is read 
Loop 

ReadTextFile.Close 
WriteTextFile.Close 

msgbox "Done" 
+0

'設置WriteTextFile = FSO.WriteTextFile( ......)'??? –

+0

對不起,假設是'Set WriteTextFile = FSO.OpenTextFile(...)'並且將Dim StartWrite改爲Dim AddStr –

相關問題