web-dev-qa-db-fra.com

Windows batch - concaténer plusieurs fichiers texte en un seul

J'ai besoin de créer un script qui concatène plusieurs fichiers texte en un seul ..__ Je sais que c'est simple à utiliser

type *.txt > merged.txt

Mais l'exigence est "concaténer des fichiers du même jour dans le fichier day_YYYY-DD-MM.txt" Je suis un utilisateur de Linux et Windows batch est un enfer pour moi. 

EDIT: Son Windows XP

14
SpeedEX505

À la base, concaténer des fichiers à partir d’un fichier de commandes s’effectue avec «copie».

copy file1.txt + file2.txt + file3.txt concattedfile.txt
19
Lance

Placez tous les fichiers doivent être copiés dans un dossier séparé, pour plus de facilité, placez-les dans le lecteur c.

Ouvrez l'invite de commandes - windows> tapez cmd> sélectionnez la commande invite.

Vous pouvez voir le répertoire par défaut pointant - Ex: C: [Nom du dossier]> . Modifiez le répertoire pour qu'il pointe vers le dossier dans lequel vous avez placé les fichiers à copier, à l'aide de la commande 'cd [Nom du dossier]'.

Après avoir pointé sur le répertoire - tapez 'dir' qui montre tous les fichiers présents dans le dossier, juste pour être sûr que tout est bien en place.

Maintenant, tapez: 'copier * .txt [nom_fichier] .txt' et appuyez sur entrée.

Terminé!

Tout le texte des fichiers individuels sera copié dans [newfile_name] .txt

6
Kingsman

La commande de type Windows fonctionne de manière similaire à UNIX cat.

Exemple 1: Fusionner avec des noms de fichiers (Ceci fusionnera fichier1.csv et fichier2.csv pour créer concat.csv)

type file1.csv file2.csv > concat.csv

Exemple 2: Fusionner des fichiers avec un motif (Ceci fusionnera tous les fichiers avec l'extension csv et créera concat.csv)

type  *.csv > concat.csv
3
XEngineer

Essaye ça:

@echo off
set yyyy=%date:~6,4%
set mm=%date:~3,2%
set dd=%date:~0,2%

set /p temp= "Enter the name of text file: "
FOR /F "tokens=* delims=" %%x in (texto1.txt, texto2.txt, texto3.txt) DO echo %%x >> day_%temp%.txt

Ce code vous demande de définir le nom du fichier après "day_" où vous pouvez saisir la date . Si vous souhaitez nommer votre fichier comme la date réelle, procédez comme suit:

FOR /F "tokens=* delims=" %%x in (texto1.txt, texto2.txt, texto3.txt) DO echo %%x >> day_%yyyy%-%mm%-%dd%.txt
1

Nous pouvons utiliser la commande CAT normale pour fusionner des fichiers. 

D:> cat * .csv> output.csv

0
Sadheesh

Vous pouvez le faire en utilisant le type: 

type"C:\<Directory containing files>\*.txt"> merged.txt

tous les fichiers du répertoire seront ajoutés au fichier merged.txt.

0
Elenasys

Je réitère certains des autres points déjà évoqués, mais en incluant un troisième exemple qui aide lorsque vous avez des fichiers dans des dossiers que vous souhaitez concaténer.

Exemple 1 (fichiers dans le même dossier):

copy file1.txt+file2.txt+file3.txt file123.txt

Exemple 2 (fichiers dans le même dossier):

type *.txt > combined.txt

Exemple 3 (les fichiers existent dans plusieurs dossiers, en supposant que newfileoutput.txt n'existe pas):

for /D %f in (folderName) DO type %f/filename.txt >> .\newfileoutput.txt
0
Gigasoup

cat "fichiers d'entrée"> "fichiers de sortie" 

Cela fonctionne dans PowerShell, qui est le shell privilégié de Windows dans les versions actuelles de Windows, donc cela fonctionne. C’est également la seule version des réponses ci-dessus à fonctionner avec des fichiers volumineux, où «type» ou «copie» échoue.

0
Stephen