用Windows命令行连接文本文件,删除前导行

我需要连接一些相对较大的文本文件,并希望通过命令行来完成此操作。 不幸的是我只有Windows,并且不能安装新的软件。

type file1.txt file2.txt > out.txt 

允许我几乎得到我想要的,但是我不希望将file2.txt的第一行包含在out.txt中。

我已经注意到, more+n选项来指定一个起跑线,但我没有设法结合这些来得到我想要的结果。 我知道,这可能是不可能在Windows中,我总是可以手动编辑out.txt摆脱线,但有一种简单的方法,从命令行?

 more +2 file2.txt > temp type temp file1.txt > out.txt 

或者你可以使用copy 。 看copy /? 为更多。

 copy /b temp+file1.txt out.txt 

我用这个,对我来说效果很好:

TYPE \\Server\Share\Folder\*.csv >> C:\Folder\ConcatenatedFile.csv

当然,在每次运行之前,你必须DELETE C:\Folder\ConcatenatedFile.csv

唯一的问题是,如果所有文件都有标题,那么它将在所有文件中重复。

我没有足够的信誉点评论build议使用*.csv >> ConcatenatedFile.csv ,但我可以添加一个警告:

如果您在用于连接的同一目录中创buildConcatenatedFile.csv文件,它将被添加到自身中。

使用FOR命令逐行回显一个文件,并用'skip'选项错过一些起始行…

 FOR /F "skip=1" %i in (file2.txt) do @echo %i 

你可以redirect一个batch file的输出,包含像…

 FOR /F %%i in (file1.txt) do @echo %%i FOR /F "skip=1" %%i in (file2.txt) do @echo %%i 

注意在batch file中使用FORvariables时的double%。

我会把这个评论给ghostdog74,除了我的代表太低,所以这里。

more +2 file2.txt > temp
这段代码实际上会忽略文件的第1行和第2行。 OP希望保留第一个文件中的所有行(保持标题行),然后排除第二个文件中的第一行(可能是同一个标题行),所以要排除标题行OP应该使用more +1

type temp file1.txt > out.txt

目前还不清楚这个代码的结果。 将temp附加到file1.txt (根据需要)或将file1.txt附加到temp (不希望的,因为标题行将被隐藏在生成文件的中间)。

另外,这些操作对于大文件(例如300MB)是非常长的时间,

我知道你说过你不能安装任何软件,但我不确定这个限制有多严格。 无论如何,我有同样的问题(试图连接两个文件,大概是相同的标题),我想我会为其他人到达这个页面提供一个替代的答案,因为它对我很好。

在Windows中尝试了一大堆命令并且感到非常沮丧之后,还尝试了各种graphics化的编辑器,它们承诺能够打开大文件,但是之后却无法启动,最后我终于回到了我的Linux根目录并打开了我的Cygwin提示。 两个命令:

 cp file1.csv out.csv tail -n+2 file2.csv >> out.csv 

对于file1.csv 800MB和file2.csv 400MB,这两个命令在我的机器上花了5秒钟。 在Cygwin提示符下,不less于。 我以为Linux命令在Cygwin中应该是很慢的,但是这种方法比我能find的任何窗口方法花费的更less的努力和方法。

以下是如何做到这一点:

 (type file1.txt && more +1 file2.txt) > out.txt 
 more +2 file1.txt > type > out.txt && type file2.txt > out.txt