用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