Unir archivos csv

Iniciado por IVANJP, 16 Febrero 2017, 19:08 PM

0 Miembros y 1 Visitante están viendo este tema.

IVANJP

hola quiero unir varios archivos .csv pero los une uno seguido del otro hay manera de unirlos con un espacio o uno abajo de otro ?

ejemplo

casa;hogar:humano;mujercasa;hogar;humano;mujer

los quisiera asi

casa;hogar;humano;mujer
casa;hogar:humano;mujer


Mod: Títulos descriptivos.[/tt]

#!drvy

¿Que usas para unirlos? Puedes poner algo de contenido de ellos para hacernos la idea?

Saludos

Serapis

#2
Bla,bla,bla...

Eleкtro

Hola.

Como ya te han mencionado, puedes usar el comando Copy. Recuerda que puedes usar los asteriscos para incluir todos los archivos del directorio de trabajo actual:

Código (dos) [Seleccionar]
Copy /B "*.csv" "Destination File.csv"




Si deseas añadir un salto de linea entre cada unión, entonces primero debes comprobar si el archivo termina con un salto de linea/linea en blanco o no, y eso no es posible mediante batch ya que el comando For por defecto descarta las lineas en blanco en la iteración de lineas de un archivo de texto plano. Así pues, esto sería una manera de hacerlo usando VisualBasic Script:

Script.vbs
Código (vb) [Seleccionar]
Option Explicit

Dim dir, file, fso, shell, reader, writer, _
    outFilepath, curLine, allLines

Set fso     = WScript.CreateObject("Scripting.FileSystemObject")
Set shell   = WScript.CreateObject("WScript.Shell")
Set dir     = fso.GetFolder(shell.CurrentDirectory)
outFilepath = dir.Path & "\" & "New.csv"
Set writer  = fso.CreateTextFile(outFilepath, True)
Set reader  = Nothing

For Each file In dir.Files
   
    If (LCase(fso.GetExtensionName(file.name)) = "csv") And (file.Path <> outFilepath) Then

        Set reader = file.OpenAsTextStream(1, False)
        Do Until reader.AtEndOfStream
            curLine = reader.ReadLine()
            If Not reader.AtEndOfStream Then
                allLines = (allLines & curLine & vbCrLf)
            Else
                allLines = (allLines & curLine)
            End If
        Loop
        reader.Close()

        If (curLine <> "") Then
            writer.write(allLines & vbCrLf)
        Else
            writer.write(allLines)
        End If

    End If

    allLines = ""
Next
writer.Close()

WScript.Quit(0)


¡Saludos!.