2014-05-15 2 views
0

제목에서 알 수 있듯이 필자는 특정 순서로 함께 결합하려는 세 개의 개별 텍스트 파일을 가지고 있습니다 (즉, file1, file2, file3을 추가합니다. 주문) 파일을 만들 수 4). 내가 읽은 다음 새 파일에 내용을 쓰기 배열로 파일을 읽을 수 FileSystemObject를 필요로 VBScript를 사용하여이 작업을 수행하는 데에서VBSCRIPT 배열로 다중 파일을 읽은 다음 단일 파일에 쓰기

(I 제안하는 경우 VBScript를 작동 어떤 열려입니다)

코드에 다음과 같은 문제가 있습니다 : 1) 스크립트가 실행되지만 데이터가 생성되지 않습니다. 2) 실행 후에는 파일이 배열 순서대로 출력 파일에 추가되어야합니다 순서대로 (한 줄에) 나는 위에 제안한다. 여기

내가 함께 일하고 있어요 배열의 예는 다음과 같습니다

CODE

Const ForReading = 1 


Dim arrServiceList(2) 
arrServiceList(0) = strText1 
arrServiceList(1) = strText2 
arrServiceList(2) = strText3 


Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objOutputFile = objFSO.CreateTextFile("output.txt") 


Set objTextFile1 = objFSO.OpenTextFile("C:\Users\95540\Desktop\Sample1.txt", ForReading) 
Set objTextFile2 = objFSO.OpenTextFile("C:\Users\95540\Desktop\Sample2.txt", ForReading) 
Set objTextFile3 = objFSO.OpenTextFile("C:\Users\95540\Desktop\Sample3.txt", ForReading) 

    strText1 = objTextFile1.ReadAll 
    objTextFile1.Close 

    strText2 = objTextFile2.ReadAll 
    objTextFile2.Close 

    strText3 = objTextFile3.ReadAll 
    objTextFile3.Close 


    objOutputFile.WriteLine arrServiceList(0) 
    objOutputFile.Close 

====================

MY 코드 5-15-15 (아래 게시물에 수정의 설명)

CODE

Const ForReading = 1 


    Set objFSO = CreateObject("Scripting.FileSystemObject") 
    Set objOutputFile = objFSO.CreateTextFile("output.txt") 


    Set objTextFile1 = objFSO.OpenTextFile("C:\Users\Brill\Desktop\Grab1.txt", ForReading) 
    Set objTextFile2 = objFSO.OpenTextFile("C:\Users\Brill\Desktop\Grab2.txt", ForReading) 
    Set objTextFile3 = objFSO.OpenTextFile("C:\Users\Brill\Desktop\Grab3.txt", ForReading) 

    Do While objTextFile1.AtEndOfStream <> True 
    Do While objTextFile2.AtEndOfStream <> True 
    Do While objTextFile3.AtEndOfStream <> True 

    strText1 = objTextFile1.ReadLine 
    objOutputFile.Write strText1 & vbTab 

    strText2 = objTextFile2.ReadLine 
    objOutputFile.Write strText2 & vbTab 

    strText3 = objTextFile3.ReadLine 
    objOutputFile.Write strText3 & vbTab & vbCrLf 

    Loop 
    Loop 
    Loop 

objOutputFile.Close 

objTextFile1.Close 
objTextFile2.Close 
objTextFile3.Close 
,536 TO

UPDATE

+0

내가 빠뜨린 한 가지; 세 개의 샘플 파일에 내용이있을 수 있다고 가정합니다. 테스트 목적으로 세 가지 다른 단어로 된 세 개의 텍스트 파일을 만드는 것이 좋습니다. –

답변

0

다음은 작동합니다. 스크립트에 문제가 있습니다. 1. 변수를 채우기 전에 배열에 변수를 지정했습니다. 2. 배열의 모든 요소를 ​​작성하지 않았습니다. (예 : '테이블 파일')을 하나 개의 모음으로 (예를 들어, 일부 '열 파일') 두 개 이상의 모음을 지퍼로 잠그는

Const ForReading = 1 


Dim arrServiceList(2) 


Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objOutputFile = objFSO.CreateTextFile("output.txt") 


Set objTextFile1 = objFSO.OpenTextFile("C:\Users\95540\Desktop\Sample1.txt", ForReading) 
Set objTextFile2 = objFSO.OpenTextFile("C:\Users\95540\Desktop\Sample2.txt", ForReading) 
Set objTextFile3 = objFSO.OpenTextFile("C:\Users\95540\Desktop\Sample3.txt", ForReading) 

    strText1 = objTextFile1.ReadAll 
    objTextFile1.Close 

    strText2 = objTextFile2.ReadAll 
    objTextFile2.Close 

    strText3 = objTextFile3.ReadAll 
    objTextFile3.Close 

    arrServiceList(0) = strText1 
    arrServiceList(1) = strText2 
    arrServiceList(2) = strText3 


    objOutputFile.WriteLine arrServiceList(0) 
    objOutputFile.WriteLine arrServiceList(1) 
    objOutputFile.WriteLine arrServiceList(2) 
    objOutputFile.Close 
+0

작동하지만 추가 변경 후. 줄에 한 번에 출력 한 부분을 (모든 세 개의 파일에 여러 줄을 처리 할 때) 위의 버전으로 유지 문제는 텍스트를 받고있다 (예 : DOCA DocB DOCC ... 를 해결하려면 이것, 나는 다음을했다 : 1) 배열을 버렸다; 2) ReadALL을 ReadLine으로 변경했습니다. 그리고 3) 라인 쓰기 및 읽기 객체/프로 시저를 반복적으로 반복하십시오. 아래 코드를 포함합니다. 나는 아직도 나는 무엇을 해야할지 모르겠다는 오류를 받는다 (파일 끝을 지나서 입력). 이제 파일이 작동합니다! 오류에 대한 제안 사항은 무엇입니까? –

+0

다른 사람이 게시 한 답변을 업데이트하는 대신 질문을 편집해야합니다. 트리를 중첩하지 않고 각 입력 파일에 대해 별도의 루프를 수행하십시오.나는 그것이 당신의 실수가 어디에 있는지 말할 것입니다. – Dijkgraaf

0

병합은/는 포함하지 않는 표준 솔루션 전략과 표준 문제 (이다 "파일을 배열로 읽음").

이 데모 코드 :

Option Explicit 
Dim goFS : Set goFS = CreateObject("FileSystemObject") 
Dim oFZip : Set oFZip = New cFZip 
oFZip.m_aIFSpecs = Split("..\data\a.txt ..\data\b.txt ..\data\c.txt") 
oFZip.zip "..\data\abc.txt" 
WScript.Echo goFS.OpenTextFile("..\data\abc.txt").ReadAll() 

Class cFZip 
    Public m_aIFSpecs ' array of input files 
    Function zip(sOFSpec) 
    Dim tsOut : Set tsOut = goFS.CreateTextFile(sOFSpec) 
    Dim nUBFiles : nUBFiles = UBound(m_aIFSpecs) 
    ReDim aFiles(nUBFiles) 
    Dim f 
    For f = 0 To nUBFiles 
     Set aFiles(f) = goFS.OpenTextFile(m_aIFSpecs(f)) 
    Next 
    Dim bDone 
    Do 
     Redim aData(UBound(m_aIFSpecs)) 
     bDone = True 
     For f = 0 To nUBFiles 
      If Not aFiles(f).AtEndOfStream Then 
       bDone = False 
       aData(f) = aFiles(f).ReadLine() 
      End If 
     Next 
     If Not bDone Then tsOut.WriteLine Join(aData, ",") 
    Loop Until bDone 
    For f = 0 To nUBFiles 
     aFiles(f).Close 
    Next 
    tsOut.Close 
    End Function 
End Class 

출력 :

1,10,100 
2,20,200 
3,30,300 
4,,400 
,,500 

기본적인 접근 방식을 보여줍니다. 클래스를 사용하여 실험/특정 적용 (예 : 구분 기호, 인용 ...)을 쉽게 만듭니다.