2013-07-05 7 views
0

J'ai un répertoire de plusieurs milliers de fichiers texte. Chaque fichier texte a une seule ligne. Pour les fusionner j'ai utilisé copy * aggregate.txt dans l'invite de commande dans Windows mais les lignes ont été copiées sans aucun espacement entre eux.Fusionner plusieurs fichiers texte en un seul

Alors comment combiner les fichiers de sorte que les lignes soient séparées? Insérer un caractère de nouvelle ligne chaque fois qu'un fichier est copié?

S'il y a un moyen de faire dans l'invite de commandes ou en utilisant le programme de traitement par lots Windows ou je pourrais le faire en écrivant un programme C++ si vous pouviez me dire comment lire tous les fichiers dans un répertoire un par un.

Répondre

1

Cela peut prendre un certain temps pour commencer des milliers de fichiers sont impliqués Modifier le d:\folder et placez le fichier batch ailleurs ce n'est pas dans d: \ dossier

@echo off  
pushd "d:\folder" 
for /f "delims=" %%a in ('dir /b /a-d ') do (
type "%%a" >>aggregate.txt 
echo.>>aggregate.txt 
) 
popd 

Ou ce qui devrait commencer tout de suite :

@echo off 
pushd "d:\folder" 
dir /b /a-d >"c:\file.tmp" 
for /f "delims=" %%a in (c:\file.tmp) do (
type "%%a" >>aggregate.txt 
echo.>>aggregate.txt 
) 
del "c:\file.tmp" 
popd 
+0

Le le second ne fonctionnait pas pendant que le premier le faisait. Maintenant, le non. de lignes dans l'ensemble est 3 de plus que le nombre de fichiers. –

+0

Supprimez le fichier aggregate.txt avant de l'exécuter. Le second nécessite une autorisation d'écriture sur c: \ – foxidrive

+0

oui il n'y avait pas d'agrégat avant de l'exécuter. Qu'en est-il des 3 lignes supplémentaires? –

0
@ECHO OFF 
SETLOCAL 
(
FOR %%i IN (*) DO if /i not "%%i"=="aggregate.txt" TYPE "%%i"&ECHO(
)>aggregate.txt 

Personnellement, j'utiliser cette ...

+0

Cela a fonctionné mais il y a plus de lignes dans le total que le nombre de fichiers. Je ne peux pas comprendre pourquoi. –

+0

Vous pouvez le simplifier en supprimant setlocal. :) Mais il va aussi analyser agrégat.txt comme ça va-t-il pas? – foxidrive

+0

Oui - la source des "lignes supplémentaires" inclut probablement "aggregate.txt" dans l'agrégation. Je l'avais supprimé avant d'exécuter les tests. Le lot modifié devrait maintenant exclure le fichier de rapport. – Magoo

Questions connexes