Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Соеденить два файла построчно (http://forum.oszone.net/showthread.php?t=202095)

AlexVong 15-03-2011 21:27 1635741

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

Iska 15-03-2011 22:05 1635765

AlexVong, если Вас устроит WSH (вместо «CMD/BAT») — это Вам сделают быстро.

AlexVong 15-03-2011 22:34 1635785

Iska, очень даже устроит...

Iska 15-03-2011 22:57 1635803

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 1635850

Iska, Скрипт объединяет файлы, но строки получаются не обединенные, а просто идут друг за другом, а надо чтобы с первых строк файла получилась первая строка, со вторых вторая и т.д.

Iska 16-03-2011 01:33 1635859

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 1636443

Iska, Спасибо, то что надо!


Время: 00:54.

Время: 00:54.
© OSzone.net 2001-