2013-07-05 50 views
0

我有一个包含几千个文本文件的目录。每个文本文件都有一行。为了合并它们,我在Windows的命令提示符中使用了copy * aggregate.txt,但是这些行已经被复制而它们之间没有任何间隔。将几个文本文件合并为一个

那么,如何合并文件,使得线是分开的?每次复制文件时插入换行符?

如果有一种方法在命令提示或使用Windows批处理程序做或者我可以通过编写C++程序中,如果你能告诉我如何通过一个读取目录中的一个的所有文件做到这一点。

回答

1

这可能需要一段时间才能开始,成千上万的文件都参与 更改d:\folder并把批处理文件在其他地方,是不是在d:\文件夹

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

或者这里面应该开始直线距离:

@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

的第一个没有工作,而第一个没有工作。现在没有。合计行数比文件数多3个。 –

+0

在运行之前删除aggregate.txt文件。第二个需要写入权限c:\ – foxidrive

+0

是的,在运行之前没有聚合。那3条额外的线呢? –

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

就个人而言,我会用这个...

+0

这工作,但总共比行数多的文件。我无法弄清楚为什么。 –

+0

您可以通过删除setlocal来进一步简化它。 :)但它也会解析aggregate.txt,因为它不会呢? – foxidrive

+0

是的 - 可能“额外行”的来源是在聚合中包含“aggregate.txt”。我在运行测试之前删除了它。修改的批次现在应该排除报告文件。 – Magoo