Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: IVANJP en 16 Febrero 2017, 19:08 pm



Título: Unir archivos csv
Publicado por: IVANJP en 16 Febrero 2017, 19:08 pm
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]


Título: Re: Unir archivos csv
Publicado por: #!drvy en 16 Febrero 2017, 21:09 pm
¿Que usas para unirlos? Puedes poner algo de contenido de ellos para hacernos la idea?

Saludos


Título: Re: Unir archivos csv
Publicado por: Serapis en 16 Febrero 2017, 23:25 pm
Bla,bla,bla...


Título: Re: Unir archivos csv
Publicado por: Eleкtro en 22 Febrero 2017, 05:05 am
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
  1. 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
  1. Option Explicit
  2.  
  3. Dim dir, file, fso, shell, reader, writer, _
  4.    outFilepath, curLine, allLines
  5.  
  6. Set fso     = WScript.CreateObject("Scripting.FileSystemObject")
  7. Set shell   = WScript.CreateObject("WScript.Shell")
  8. Set dir     = fso.GetFolder(shell.CurrentDirectory)
  9. outFilepath = dir.Path & "\" & "New.csv"
  10. Set writer  = fso.CreateTextFile(outFilepath, True)
  11. Set reader  = Nothing
  12.  
  13. For Each file In dir.Files
  14.  
  15.    If (LCase(fso.GetExtensionName(file.name)) = "csv") And (file.Path <> outFilepath) Then
  16.  
  17.        Set reader = file.OpenAsTextStream(1, False)
  18.        Do Until reader.AtEndOfStream
  19.            curLine = reader.ReadLine()
  20.            If Not reader.AtEndOfStream Then
  21.                allLines = (allLines & curLine & vbCrLf)
  22.            Else
  23.                allLines = (allLines & curLine)
  24.            End If
  25.        Loop
  26.        reader.Close()
  27.  
  28.        If (curLine <> "") Then
  29.            writer.write(allLines & vbCrLf)
  30.        Else
  31.            writer.write(allLines)
  32.        End If
  33.  
  34.    End If
  35.  
  36.    allLines = ""
  37. Next
  38. writer.Close()
  39.  
  40. WScript.Quit(0)

¡Saludos!.