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.

Mirage
la source
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

Peter Mortensen
la source
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
Echeban
la source
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.

nik
la source
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
Abhishek Goel
la source
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

:)

Echeban
la source
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