2010-08-05 26 views
34

Tengo de 50 a 60 archivos en un directorio que necesito concatenar en un único archivo de forma regular.Necesito combinar muchos archivos en un directorio

Pensé en usar notepad ++ pensando que probablemente había un complemento que ayudaría pero que no había podido encontrar.

¿Alguna otra idea?

+0

¿Está utilizando Windows o Linux OS? si Windows, ¿tiene instalado PowerShell? –

+0

Si no desea que se cierre esta pregunta, será mejor que la edite para preguntar "¿Cómo puedo escribir un programa para fusionar archivos en un intervalo programado?". Podemos ayudarle fácilmente a escribir una aplicación pequeña para hacer esto (lote, secuencia de comandos vb, .net, etc.) ... pero deberá enviar su pregunta a http://superuser.com si desea alguna recomendación sobre utilizando aplicaciones de terceros para hacer el trabajo por usted. –

+0

¿Concatena los archivos en uno que sea legible o solo para fines de archivo? Personalmente concateno una gran cantidad de imágenes JPG en un solo archivo ZIP, sin compresión, para facilitar el transporte y el almacenamiento a largo plazo. Pero debe indicar qué tipo de archivos, qué sistema operativo y proporcionar más detalles si necesita ayuda con la programación. – JYelton

Respuesta

70

Suponiendo que se trata de archivos de texto (ya que está utilizando el bloc de notas ++) y que está en Windows, podría crear un script por lotes simple para concatenarlos juntos.

Por ejemplo, en el directorio con todos los archivos de texto, ejecutar lo siguiente:

for %f in (*.txt) do type "%f" >> combined.txt 

Esto se fusionarán todos los archivos coincidentes * .txt en un archivo llamado combined.txt.

Para más información:

http://www.howtogeek.com/howto/keyboard-ninja/keyboard-ninja-concatenate-multiple-text-files-in-windows/

+0

Tenga en cuenta que probablemente no haría esto por una cantidad muy grande o una cantidad muy grande de archivos. – JYelton

+1

Esto es genial si quiere que se inserte una gran cantidad de BOM (marcas de bytes) en el archivo combinado (probablemente no lo haga) – Darragh

+0

Eso depende completamente de la naturaleza y la codificación de los archivos que se unen. Las BOM son opcionales en UTF8 y, aunque algunas aplicaciones de Windows son famosas por agregar estos tres bytes al inicio de un archivo, Windows 7 Notepad, por ejemplo, no. Sin embargo, si están presentes y causan un problema, hay un informe aquí: http://www.heikniemi.net/hardcoded/2009/12/utf-8-preamble-is-a-problem-when-you-concatenate- files/ – JYelton

59

Utilice el comando 'copiar' de Windows.

C:\Users\dan>help copy 
    Copies one or more files to another location. 

    COPY [/D] [/V] [/N] [/Y | /-Y] [/Z] [/L] [/A | /B ] source [/A | /B] 
     [+ source [/A | /B] [+ ...]] [destination [/A | /B]] 

     source  Specifies the file or files to be copied. 
     /A   Indicates an ASCII text file. 
     /B   Indicates a binary file. 
     /D   Allow the destination file to be created decrypted 
     destination Specifies the directory and/or filename for the new file(s). 
     /V   Verifies that new files are written correctly. 
     /N   Uses short filename, if available, when copying a file with 
        a non-8dot3 name. 
     /Y   Suppresses prompting to confirm you want to overwrite an 
        existing destination file. 
     /-Y   Causes prompting to confirm you want to overwrite an 
        existing destination file. 
     /Z   Copies networked files in restartable mode. 
     /L   If the source is a symbolic link, copy the link to the 
        target 
        instead of the actual file the source link points to. 

    The switch /Y may be preset in the COPYCMD environment variable. 
    This may be overridden with /-Y on the command line. Default is 
    to prompt on overwrites unless COPY command is being executed from 
    within a batch script. 

    **To append files, specify a single file for destination, but 
    multiple files for source (using wildcards or file1+file2+file3 
    format).** 

Así, en su caso:

copy *.txt destination.txt

concatenará todos los archivos .txt en orden alfabético en destination.txt

Gracias por preguntar, he aprendido algo nuevo!

+2

No hay necesidad de un script de PowerShell después de todo. Aprendí algo nuevo también. Gracias. –

+3

también puede especificar el orden, según esa descripción de la ayuda: copia archivo1.txt + archivo2.txt + archivo3.txt destino.txt – dwerner

+1

esta (¿respuesta idéntica ?!) será (también) carnicero, p. codificación utf8 en sustitutos ANSI inaceptables para muchos caracteres. –

1

podría utilizar script de PowerShell como esto

$sb = new-object System.Text.StringBuilder 

foreach ($file in Get-ChildItem -path 'C:\temp\xx\') { 
    $content = Get-Content -Path $file.fullname 
    $sb.Append($content) 
} 
Out-File -FilePath 'C:\temp\xx\c.txt' -InputObject $sb.toString() 
+0

No funcionó para mí, tuve que cambiarlo a algo como esto (con newline añadida después de cada archivo): 'foreach ($ archivo en Get-ChildItem -path 'C: \ temp \ EXEMPLES_TEST') { $ content = Get -Content -Path $ file.fullname $ content = $ content + [Environment] :: NewLine $ content | Out-File 'C: \ temp \ EXEMPLES_TEST \ combined.txt' -append } ' –

0

Hay una herramienta de terceros útil llamada Herramientas FileMenu, que da varias botón derecho del ratón herramientas como una extensión de Windows Explorer.

Uno de ellos es Split archivo/unir piezas, que hace y deshace exactamente lo que busca.

Compruébelo en http://www.lopesoft.com/en/filemenutools. Por supuesto, solo es Windows, ya que los entornos Unixes ya tienen muchas herramientas para eso.

11
copy *.txt all.txt 

Esto concatenar todos los archivos de texto de la carpeta a un archivo de texto all.txt

Si tiene cualquier otro tipo de archivos, como archivos SQL

copy *.sql all.sql 
+2

Esto descuartizará, p. codificación utf8 en sustitutos ANSI inaceptables para muchos caracteres. –

0

Sé que esto es una publicación anterior, pero la encontré y luego encontré a alguien que me sugirió Total Mail Converter. Pude convertir mi carpeta con 2k archivos .msg en .txt. También le permite convertir a PDF y otros formatos populares.

Es una gran herramienta que estoy contento de que alguien haya sugerido, ya que me ahorrará varios días.

FYI - Mi proyecto es la combinación de.msg archivos en un archivo de texto para que pueda ejecutar un script para extraer cierta información de los archivos (es decir, correo electrónico y enlaces). En lugar de archivos 2k, puedo trabajar con uno.

0

En Windows utilizo un comando simple en un archivo por lotes y utilizo una Tarea programada para mantener toda la información en un solo archivo. Asegúrese de elegir otra ruta al archivo de resultados, o tendrá datos duplicados.

tipo PathToOriginalFiles \ *. Extensión > AnotherPathToResultFile \ NameOfTheResultFile.Extension

Si necesita unirse a una gran cantidad de archivos CSV, una buena cosa que hacer es tener la cabecera en un solo archivo con una nombre como 0header.csv u otro nombre, por lo que siempre será el primer archivo de la lista, y asegúrese de programar todos los demás archivos csv para que no contengan un encabezado.

4

sí, un plug-in está disponible llamado "combinar" para Notepad ++ Enlace:. >>Combine Plugin for Notepad++

Puedes instalarlo a través del administrador de complementos. La ventaja adicional de este complemento es: "Puede mantener la secuencia de archivos durante la fusión, de acuerdo con la secuencia de archivos abiertos (ver pestañas)".

0

He utilizado esta secuencia de comandos en Windows PowerShell:

ForEach ($f in get-ChildItem *.sql) { type "$f" >> all.sql } 
Cuestiones relacionadas