2017-08-31 75 views
0

我想從文件中讀取數據,創建數組,然後在添加一些附加信息的同時逐行寫入第二個文件(逐個元素)。下面的腳本將從文件中正確讀取,但只會寫入最初的文件中的最後一行。我怎樣才能從數組中寫一個? (我可以用不同的方式將內容寫入第二個文件,但我想直接從數組中完成)。從數組中逐一讀取 - VBScript

Const ForReading = 1, ForWriting = 2, ForAppending = 3 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objFile = objFSO.OpenTextFile(input, 
ForReading) 

Do Until objFile.AtEndOfStream 
    strLine = objFile.ReadLine 
    arrFields = Split(strLine, ",") 
    If InStr(arrFields(1), "False") Then 
     strContents = strContents & arrFields(0) & vbCrlf 
    End If 
Loop 

objFile.Close 

Set objFile = objFSO.CreateTextFile(output) 

' below correctly outputs contents 
' objFile.Write strContents 

For each i in arrFields 
    objFile.Write arrFields(0) 
    objFile.Write "Number" & vbCrlf 
Next 

objFile.Close 

我測試的CSV文件讀取,如下保存爲記事本「test.csv」。

1,FALSE 
2,FALSE 
3,FALSE 
4,FALSE 
5,FALSE 
6,FALSE 
7,FALSE 
8,FALSE 
9,FALSE 
10,FALSE 
11,FALSE 
12,FALSE 
13,TRUE 
+0

你不應該寫'i',而不是'arrFields(0)''中對於Each'循環? –

+0

我認爲是這樣,但我得到一個錯誤,說下標我超出範圍。我真的不知道這意味着什麼。 – ARS

+0

我不確定你要從文件1添加到文件2的額外信息。它看起來像你只是讀取一個文件並試圖在文件2中寫入相同的文件。你能更具體地說明你想要做什麼處理在文件2中寫入東西之前? –

回答

0

示例代碼

Const ForReading = 1, ForWriting = 2, ForAppending = 3 

Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objFile = objFSO.OpenTextFile("C:\Users\pankaj.jaju\Desktop\test.csv", ForReading) 

arrFields = Split(objFile.ReadAll, vbCrLf) 
objFile.Close 

Set objFile = objFSO.CreateTextFile("C:\Users\pankaj.jaju\Desktop\test1.txt") 
For i = LBound(arrFields) To UBound(arrFields) 
    objFile.Write "Number " & i+1 & "," & Split(arrFields(i),",")(0) & vbCrlf 
Next 
objFile.Close