(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

Cómo combinar varios archivos CSV en uno con PowerShell

João Barros 08 de July de 2026 4 min de lectura

Consolidar varios archivos CSV en un único archivo es una de las tareas más habituales en la preparación de datos: exportaciones mensuales de ventas, informes diarios o extracciones de sistemas distintos que hay que reunir. Hacerlo a mano en Excel es lento y propenso a errores. Con PowerShell puedes combinar varios archivos CSV en uno de forma automática y repetible. Esta guía te muestra cómo, paso a paso, con ejemplos listos para usar.

Requisitos previos

  • Windows con Windows PowerShell 5.1 o PowerShell 7 (los comandos funcionan en ambos).
  • Una carpeta con los archivos CSV a unir, por ejemplo C:\Dados\Vendas.
  • Todos los archivos con las mismas columnas y el mismo separador (coma o punto y coma).
  • Permiso de escritura en la carpeta donde vas a guardar el resultado.

Paso 1: Organizar los archivos en una carpeta

Empieza por colocar todos los CSV a combinar en la misma carpeta. Usa nombres coherentes, como vendas-2026-01.csv y vendas-2026-02.csv, para saber siempre qué estás procesando. Comprueba que todos tienen la misma cabecera, es decir, los mismos nombres de columnas en el mismo orden: el archivo final se basará en las columnas del primer archivo leído.

Paso 2: Listar los archivos con Get-ChildItem

Abre PowerShell y usa Get-ChildItem para ver los CSV que se van a procesar. El parámetro -Filter *.csv garantiza que solo entren archivos con la extensión correcta.

Get-ChildItem -Path "C:\Dados\Vendas" -Filter *.csv

Si la lista muestra exactamente los archivos correctos, puedes continuar. Si aparecen archivos de más, muévelos a otra carpeta antes de seguir.

Paso 3: Leer cada CSV con Import-Csv

El comando Import-Csv lee un archivo CSV y convierte cada fila en un objeto, con una propiedad por columna. Al conectar Get-ChildItem con Import-Csv mediante el pipeline (el símbolo |), leemos todos los archivos en secuencia.

Get-ChildItem -Path "C:\Dados\Vendas" -Filter *.csv |
    ForEach-Object { Import-Csv -Path $_.FullName }
Si tus archivos usan punto y coma como separador (habitual en Portugal y España), añade -Delimiter ';' al Import-Csv.

Paso 4: Unir todo y exportar a un solo archivo

Ahora conectamos el resultado con Export-Csv, que escribe todos los objetos en un único archivo con una sola cabecera. Usa -NoTypeInformation para evitar una línea de tipo innecesaria y -Encoding UTF8 para mantener correctos los acentos.

Get-ChildItem -Path "C:\Dados\Vendas" -Filter *.csv |
    ForEach-Object { Import-Csv -Path $_.FullName } |
    Export-Csv -Path "C:\Dados\vendas-consolidado.csv" -NoTypeInformation -Encoding UTF8

En pocos segundos, el archivo vendas-consolidado.csv reúne las filas de todos los CSV de la carpeta.

Paso 5: (Opcional) Guardar el origen de cada fila

Muchas veces es útil saber de qué archivo procede cada fila. Podemos añadir una columna Origem (origen) con el nombre del archivo, usando Add-Member antes de exportar.

Get-ChildItem -Path "C:\Dados\Vendas" -Filter *.csv | ForEach-Object {
    $nome = $_.Name
    Import-Csv -Path $_.FullName | ForEach-Object {
        $_ | Add-Member -NotePropertyName Origem -NotePropertyValue $nome -PassThru
    }
} | Export-Csv -Path "C:\Dados\vendas-consolidado.csv" -NoTypeInformation -Encoding UTF8

Así, cada fila del archivo final indica el CSV del que se leyó, lo que resulta muy práctico para auditar los datos más adelante.

Comprobar el resultado

Para confirmar que salió bien, lee el archivo final y cuenta las filas:

Import-Csv -Path "C:\Dados\vendas-consolidado.csv" | Measure-Object

El valor de Count debe ser igual a la suma de las filas de datos de todos los archivos originales, sin contar las cabeceras. También puedes abrir el CSV en Excel y comprobar que solo hay una cabecera arriba. Si el total no cuadra, revisa si algún archivo tenía columnas con nombres distintos.

Conclusión

Con solo tres comandos — Get-ChildItem, Import-Csv y Export-Csv — has automatizado la unión de varios CSV en un único archivo, una base esencial para cualquier flujo de datos. El siguiente paso natural es programar este script en el Task Scheduler para que la consolidación ocurra sola cada mes. ¿Qué otra tarea repetitiva de datos te gustaría dejar de hacer a mano?