web-dev-qa-db-fra.com

Besoin de combiner beaucoup de fichiers dans un répertoire

J'ai 50 à 60 fichiers dans un répertoire que je dois concaténer régulièrement dans un seul fichier. 

J'ai pensé à utiliser notepad ++ en pensant qu'il existait probablement un plug-in qui aiderait, mais que je n'ai pas réussi à trouver.

D'autres pensées?

39
tnriverfish

En supposant qu'il s'agisse de fichiers texte (puisque vous utilisez notepad ++) et que vous utilisez Windows, vous pouvez créer un simple script batch pour les concaténer.

Par exemple, dans le répertoire contenant tous les fichiers texte, exécutez les opérations suivantes:

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

Cela fusionnera tous les fichiers correspondant à * .txt en un seul fichier appelé combiné.txt.

Pour plus d'informations:

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

80
JYelton

Utilisez la commande "Copier" 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).**

Donc dans votre cas:

copier * .txt destination.txt

Concaténera tous les fichiers .txt par ordre alphabétique dans destination.txt

Merci d'avoir demandé, j'ai appris quelque chose de nouveau!

62
dwerner
copy *.txt all.txt

Cela concaténera tous les fichiers texte du dossier dans un fichier texte all.txt.

Si vous avez d'autres types de fichiers, comme des fichiers SQL

copy *.sql all.sql
10
abhishek

Oui, il existe un plugin nommé "combine" pour le Bloc-notes ++. Lien:. >> Le module Combiner pour le Bloc-notes ++

Vous pouvez l'installer via le gestionnaire de plugins. Le bénéfice supplémentaire de ce plugin est: "Vous pouvez conserver la séquence de fichiers lors de la fusion, cela dépend de la séquence des fichiers ouverts qui sont ouverts (voir les onglets)".

5
Md. Monirul Alom

Si vous aimez faire cela pour les fichiers ouverts sur Notepad ++, vous pouvez utiliser le plugin Combine: http://www.scout-soft.com/combine/

1
vahid kh

vous pouvez utiliser un script PowerShell comme celui-ci

$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()
1
Iain

Dans Windows, j'utilise une simple commande dans un fichier de commandes et une tâche planifiée pour conserver toutes les informations dans un seul fichier. Assurez-vous de choisir un autre chemin d'accès au fichier de résultat, sinon vous aurez des données en double. 

type PathToOriginalFiles\*. Extension> AnotherPathToResultFile\NameOfTheResultFile.Extension

Si vous avez besoin de joindre beaucoup de fichiers csv, le mieux est d’avoir l’en-tête dans un seul fichier portant le nom 0header.csv , ou un autre nom, afin qu’il soit toujours le premier fichier liste, et assurez-vous de programmer tous les autres fichiers csv pour qu’ils ne contiennent pas d’en-tête.

1
Pedro Oliveira

J'ai utilisé ce script sur windows PowerShell:

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

Il existe un outil tiers pratique appelé FileMenu Tools, qui donne à plusieurs outils du clic droit une extension de Windows Explorer.

Split fichier/Join Parts en fait partie et annule exactement ce que vous recherchez.

Vérifiez-le à l’adresse http://www.lopesoft.com/fr/filemenutools . Bien sûr, il s’agit de Windows uniquement, car les environnements Unix disposent déjà de nombreux outils pour cela.

0
PPC

Je sais que ceci est un ancien post, mais je l’ai trouvé et ensuite trouvé quelqu'un qui a suggéré Total Mail Converter. J'ai été capable de convertir mon dossier avec 2k fichiers .msg en .txt. Il vous permet également de convertir en PDF et en d'autres formats populaires.

C'est un excellent outil que je suis heureux de voir suggéré par quelqu'un car cela me fera gagner plusieurs jours.

FYI - Mon projet combine les fichiers .msg en un seul fichier texte afin que je puisse exécuter un script pour extraire certaines informations des fichiers (par exemple, email et liens). Au lieu de 2k fichiers, je peux travailler avec un seul.

0
Osensnolf