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
À 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
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
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
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
Nous pouvons utiliser la commande CAT normale pour fusionner des fichiers.
D:> cat * .csv> output.csv
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
.
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
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.