Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


На WSH.

Медленнее, но меньше памяти
Код: Выделить весь код
Option Explicit

Dim strSource1File
Dim strSource2File
Dim strDestFile

Dim objSource1TS
Dim objSource2TS
Dim objDestTS

Dim strSource1Line, strSource2Line


strSource1File = "C:\Мои проекты\0052\01.txt"
strSource2File = "C:\Мои проекты\0052\02.txt"
strDestFile    = "C:\Мои проекты\0052\04.txt"

With WScript.CreateObject("Scripting.FileSystemObject")
	Set objSource1TS = .OpenTextFile(strSource1File)
	Set objSource2TS = .OpenTextFile(strSource2File)
	Set objDestTS    = .CreateTextFile(strDestFile, True)
	
	If Not objSource1TS.AtEndOfStream Then
		strSource1Line = objSource1TS.ReadLine()
	Else
		WScript.Quit 1
	End If
		
	Do
		If Not objSource2TS.AtEndOfStream Then
			strSource2Line = objSource2TS.ReadLine()
			
			If Len(Trim(strSource2Line)) = 0 Then
				objDestTS.WriteLine strSource1Line
				
				If Not objSource1TS.AtEndOfStream Then
					strSource1Line = objSource1TS.ReadLine()
				Else
					strSource1Line = ""
				End If
			Else
				objDestTS.WriteLine strSource2Line
			End If
		Else
			Exit Do
		End If
	Loop
	
	objDestTS.Close
	objSource2TS.Close
	objSource1TS.Close
	
	Set objDestTS    = Nothing
	Set objSource2TS = Nothing
	Set objSource1TS = Nothing
End With

WScript.Quit 0

Быстрее, но больше памяти
Код: Выделить весь код
Option Explicit

Dim strSource1File
Dim strSource2File
Dim strDestFile

Dim arrSource1Content
Dim arrSource2Content

Dim iSource1Count, iSource2Count


strSource1File = "C:\Мои проекты\0052\01.txt"
strSource2File = "C:\Мои проекты\0052\02.txt"
strDestFile    = "C:\Мои проекты\0052\04.txt"

With WScript.CreateObject("Scripting.FileSystemObject")
	With .OpenTextFile(strSource1File)
		arrSource1Content = Split(.ReadAll(), vbCrLf)
		.Close
	End With
	
	With .OpenTextFile(strSource2File)
		arrSource2Content = Split(.ReadAll(), vbCrLf)
		.Close
	End With
	
	iSource2Count = LBound(arrSource2Content)
	
	For iSource1Count = LBound(arrSource1Content) To UBound(arrSource1Content)
		Do
			If Len(Trim(arrSource2Content(iSource2Count))) = 0 Then
				arrSource2Content(iSource2Count) = arrSource1Content(iSource1Count)
				Exit Do
			End If
			
			iSource2Count = iSource2Count + 1
			
			If iSource2Count > UBound(arrSource2Content) Then
				Exit For
			End If
		Loop
	Next
	
	With .CreateTextFile(strDestFile, True)
		.Write Join(arrSource2Content, vbCrLf)
		.Close
	End With
End With

WScript.Quit 0

Будете проверять на тех образцах, что Вы выложили — имейте в виду, что у Вас там две одиннадцатых строки .
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:24, 17-03-2017 | #8