Показать полную графическую версию : [решено] Соеденить два файла построчно
AlexVong
15-03-2011, 21:27
Подскажите пожалуйста как соеденить два файла (например 1.txt и 2.txt), не один за одним, а построчно 1-ая строка файла 1 +1-ая строка файла 2 и т.д.
AlexVong, если Вас устроит WSH (вместо «CMD/BAT») — это Вам сделают быстро.
AlexVong
15-03-2011, 22:34
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> <Путь к выходному файлу>
AlexVong
16-03-2011, 01:07
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
Обратите внимание на комментарий «Если нужно, чтобы строки отделялись друг от друга пробелом…» в скрипте.
AlexVong
16-03-2011, 19:36
Iska, Спасибо, то что надо!
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC