PDA

Показать полную графическую версию : [решено] Соеденить два файла построчно


AlexVong
15-03-2011, 21:27
Подскажите пожалуйста как соеденить два файла (например 1.txt и 2.txt), не один за одним, а построчно 1-ая строка файла 1 +1-ая строка файла 2 и т.д.

Iska
15-03-2011, 22:05
AlexVong, если Вас устроит WSH (вместо «CMD/BAT») — это Вам сделают быстро.

AlexVong
15-03-2011, 22:34
Iska, очень даже устроит...

Iska
15-03-2011, 22:57
AlexVong, если без проверок — то примерно так:
Option Explicit

' Enum IOMode
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8


Dim objFSO

Dim objTSIn1
Dim objTSIn2
Dim objTSOut


Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

Set objTSIn1 = objFSO.OpenTextFile(WScript.Arguments.Item(0), ForReading)
Set objTSIn2 = objFSO.OpenTextFile(WScript.Arguments.Item(1), ForReading)
Set objTSOut = objFSO.OpenTextFile(WScript.Arguments.Item(2), ForWriting, True)

Do Until objTSIn1.AtEndOfStream And objTSIn2.AtEndOfStream
If Not objTSIn1.AtEndOfStream Then
objTSOut.WriteLine objTSIn1.ReadLine
End If

If Not objTSIn2.AtEndOfStream Then
objTSOut.WriteLine objTSIn2.ReadLine
End If
Loop

objTSOut.Close
objTSIn2.Close
objTSIn1.Close

Set objTSOut = Nothing
Set objTSIn2 = Nothing
Set objTSIn1 = Nothing

Set objFSO = Nothing

WScript.Quit 0

Вызов:
Script.vbs <Путь ко входному файлу 1> <Путь ко входному файлу 2> <Путь к выходному файлу>

AlexVong
16-03-2011, 01:07
Iska, Скрипт объединяет файлы, но строки получаются не обединенные, а просто идут друг за другом, а надо чтобы с первых строк файла получилась первая строка, со вторых вторая и т.д.

Iska
16-03-2011, 01:33
AlexVong, ясно. Значит я неверно Вас понял. Попробуйте так:
Option Explicit

' Enum IOMode
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8


Dim objFSO

Dim objTSIn1
Dim objTSIn2
Dim objTSOut


Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

Set objTSIn1 = objFSO.OpenTextFile(WScript.Arguments.Item(0), ForReading)
Set objTSIn2 = objFSO.OpenTextFile(WScript.Arguments.Item(1), ForReading)
Set objTSOut = objFSO.OpenTextFile(WScript.Arguments.Item(2), ForWriting, True)

Do Until objTSIn1.AtEndOfStream And objTSIn2.AtEndOfStream
If Not objTSIn1.AtEndOfStream Then
objTSOut.Write objTSIn1.ReadLine
End If

' Если нужно, чтобы строки отделялись друг от друга пробелом
' — раскомментируйте следующую строку
'objTSOut.Write " "

If Not objTSIn2.AtEndOfStream Then
objTSOut.Write objTSIn2.ReadLine
End If

objTSOut.WriteLine
Loop

objTSOut.Close
objTSIn2.Close
objTSIn1.Close

Set objTSOut = Nothing
Set objTSIn2 = Nothing
Set objTSIn1 = Nothing

Set objFSO = Nothing

WScript.Quit 0
Обратите внимание на комментарий «Если нужно, чтобы строки отделялись друг от друга пробелом…» в скрипте.

AlexVong
16-03-2011, 19:36
Iska, Спасибо, то что надо!




© OSzone.net 2001-2012