Соеденить два файла построчно
Подскажите пожалуйста как соеденить два файла (например 1.txt и 2.txt), не один за одним, а построчно 1-ая строка файла 1 +1-ая строка файла 2 и т.д.
|
AlexVong, если Вас устроит WSH (вместо «CMD/BAT») — это Вам сделают быстро.
|
Iska, очень даже устроит...
|
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> <Путь к выходному файлу>
|
Iska, Скрипт объединяет файлы, но строки получаются не обединенные, а просто идут друг за другом, а надо чтобы с первых строк файла получилась первая строка, со вторых вторая и т.д.
|
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
Обратите внимание на комментарий «Если нужно, чтобы строки отделялись друг от друга пробелом…» в скрипте.
|
Iska, Спасибо, то что надо!
|
Время: 00:54.
© OSzone.net 2001-