Une cmd en ligne de commande ou batch pour concaténer plusieurs fichiers


99

J'ai 50 fichiers texte dans un répertoire.

Existe-t-il une méthode de ligne de commande Windows pour concaténer ces fichiers en un seul fichier?

J'utilise Windows Vista .

Je ne veux pas taper le nom de tous les fichiers.


quelle version de DOS utilisez-vous? :) Allez, donnez-nous plus d'informations, quels types de fichiers ... vous cherchez évidemment un moyen de fusionner ces fichiers.

L'article est édité
Mirage

2
DOS sous les systèmes d'exploitation Windows NT (NT, 2000 et tout depuis XP) n'est vraiment pas DOS, c'est un shell de commande appelé "cmd.exe". Suppression des balises DOS pour refléter cela.
Quack Quichote

désolé pour ça, je ne le savais vraiment pas. Je pensais comme DOS
Mirage le

1
Heureusement, les derniers vestiges de DOS sont morts avec Windows ME. :) mais pas de panique - la plupart des gens appellent toujours la ligne de commande Windows "DOS", donc ce n’est pas faux , mais inexact . comme le vrai DOS est encore parfois utilisé, je nettoie la balise DOS pour en faire de vraies questions DOS.
Quack Quichote

Réponses:


128

Je ne veux pas taper le nom de tous les fichiers.

C'est facile à éviter. Ouvrez une invite de commande dans ce dossier et tapez la commande suivante:

copy /b *.txt newfile.txt

Appuyez sur Enter.

Désormais, tous les fichiers texte de ce dossier, classés par ordre croissant de date, seront fusionnés dans un seul fichier appelé newfile.txt.

Mon but ultime est de stocker le contenu de chaque fichier texte dans une colonne séparée d'une feuille Excel.

Voici un tutoriel qui peut vous aider à atteindre votre "objectif ultime":

Fusionner tous les fichiers CSV ou TXT d'un dossier dans une seule feuille de travail


Est-il possible d'insérer un caractère de nouvelle ligne après chaque fichier
Mirage

pas avec cette méthode.
Quack Quichote

Quelles sont les autres options. Mon but ultime est de stocker le contenu de chaque fichier texte dans une colonne séparée de la feuille Excel. TOUTES idées
Mirage

@Mirage - mis à jour ma réponse en fonction de votre commentaire.

Mais le problème est de savoir comment puis-je ajouter le caractère final à chaque fichier texte. Actuellement, certains fichiers de texte sont dans le même paragraphe dans le fichier fusionné, donc Excel le met dans une colonne. OU si je peux ajouter un caractère de fin de ligne à tous les fichiers d'abord et ensuite effectuer l'opération de fusion
Mirage

38

Pour ajouter une newLine à la fin de chaque fichier concaténé, utilisez la méthode suivante à la typeplace de copy:

type *.txt > newfile.txt

5
AVERTISSEMENT: lorsque vous utilisez le type * .txt> newfile.txt , le texte est dupliqué.
Malganis

2
Retirer .txtde newfileet bam! Voilà.
Fa enfant sauvage

C’est une excellente réponse pour concaténer des fichiers journaux ou d’autres tâches que vous analyserez ultérieurement. Plus précisément, vous pouvez vous type x.log.* > merged.logpasser d’un fichier de commandes. Les nouvelles lignes sont assez faciles à gérer.
Daniel Chapman

1
Wow, typea parcouru un long chemin depuis DOS 3.3. Je ne savais pas que vous pouviez utiliser des masques de fichiers. Quand est-ce arrivé?
Dimanche

32

En supposant que vous parliez d’ajouter des fichiers texte, vous copypouvez utiliser la commande pour les ajouter ensemble:

copy file1+file2+file3 targetfile

Si vous avez plusieurs fichiers, vous pouvez créer une boucle en ajoutant un fichier à la fois.

Pour les fichiers binaires, ajoutez l' /boption ' ':

copy /b file1+file2+file3 targetfile

Cela suppose que vous sachiez que les fichiers binaires avec lesquels vous travaillez peuvent être ajoutés dos à dos; sinon, vous obtiendrez une masse de données inutiles.


5
Ceci est très utile si vous devez concaténer des fichiers dans un ordre particulier.
Kapex


8

Exécutez la commande suivante à l'invite de commande:

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

1
Cela ne fonctionne pas comme prévu, tout le texte est dupliqué dansoutput.txt
DavidPostill

3
Astuce * .txt correspond à output.txt
DavidPostill

@ DavidPostill, j'ai modifié la réponse en fonction de vos préoccupations.
Saran

3

Le fichier .bat suivant ajoutera tous les fichiers * .for, à l’exception de celui nommé XIT.for, à un fichier vierge nommé MASTER.for.

type NUL > MASTER.for
FOR %%G IN (*.for) DO IF NOT "%%G" == "XIT.for" copy /A MASTER.for+"%%G" && echo. >> MASTER.for

:)


2
Un léger revirement sur ce qui précède: si l'on veut s'assurer que les fichiers sont concaténés par ordre alphabétique , il faut utiliser: FOR / F %% G IN ('dir / b / o * .for') NE PAS "%% G" == "XIT.for" copie / A MASTER.for + "%% G" && echo. >> MASTER.for
Guido Domenici

J'aime ça. Un autre réglage dont j'avais besoin aujourd'hui est qu'un en-tête de nom de fichier soit imprimé dans le fichier pour séparer les fichiers d'entrée. for %f in (*.txt) do ((echo. & echo == %f == & echo. & type %f ) >> *.txt.dat )
Curtis Price

Je suis conscient que l'utilisation d'un shell bash aurait probablement plus de sens!
Curtis Price
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.