Existe alguna forma de fucionar esos archivos de forma que las lineas queden en sus lugares correspondietes? Parecia algo bastante sencillo, pero el otro dia le di un millon de vueltas y no encotre ninguna forma.
En Batch sería algo MUY,
MUY tedioso (e ineficiente) ya que no tiene soporte para Arrays; En cualquier otro lenguaje de verdad, sería algo muy sencillo.
Una manera general de llevar a cabo esa tarea sería iterar con un búcle las lineas de texto del primer archivo para añadir esas lineas a un Array, una vez hecho esto, ya tienes una colección indizada en la que poder comprobar si un elemento está vacío o no, para reemplazarlo/fusionarlo por el elemento con el mismo índice al iterar las lineas del segundo archivo.
Pseudo-Código:
declare linesCol(Array) = Null
declare mixedLinesCol(Array) = Null
declare index(Int32) = 0
For Each line(String) in textfile1.ReadToEnd:
linesCol1(Index) = line
Index += 1
End For
Index = 0 # Resetear el contador.
For each line(String) in textfile2.ReadToEnd:
# Si la linea no está vacía, reemplazar por la linea original (o añadirla).
if line.IsNotEmpty() Then
linesCol1(Index) = line
End If
Index += 1
End For
Se que no es Batch, pero desarrollarlo en Batch sería perder el tiempo por que hay muchas mejores opciones, prefiero aportarte una alternativa mejor, mostrándote este código funcional (y eficiente) desarrollado en VB.NET:
Dim textLineCol1 As IEnumerable(Of String) =
File.
ReadAllLines("Archivo 1.txt", Encoding.
Default)
Dim textLineCol2 As IEnumerable(Of String) =
File.
ReadAllLines("Archivo 2.txt", Encoding.
Default)
Dim mixedLineCol As New List(Of String)
For index As Integer = 0 To (textLineCol2.Count - 1)
Dim curLine As String = textLineCol2(index)
If (textLineCol1.Count <= index) OrElse (Not String.IsNullOrWhiteSpace(curLine)) Then
mixedLineCol.Add(curLine)
Else
mixedLineCol.Add(textLineCol1(index))
End If
Next index
File.
WriteAllLines("Fusionado.txt", mixedLineCol, Encoding.
Default)
Archivo 1.txt:
Linea1
Linea 3
Linea 5
Archivo 2.txt:
Linea 2
Linea 4
Linea5 - Nueva
Linea 6
Archivo Combinado.txt:
Linea1
Linea 2
Linea 3
Linea 4
Linea5 - Nueva
Linea 6
Saludos!