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

Jam*_*mes 124 windows command-line concatenation

我需要连接一些相对较大的文本文件,并希望通过命令行执行此操作.不幸的是我只有Windows,无法安装新软件.

type file1.txt file2.txt > out.txt
Run Code Online (Sandbox Code Playgroud)

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

我注意到,more+n指定一个起跑线上的选择,但我还没有成功地组合这些得到我想要的结果.我知道在Windows中这可能是不可能的,我总是可以手动编辑out.txt来摆脱这一行,但有一种简单的方法可以从命令行执行此操作吗?

gho*_*g74 134

more +2 file2.txt > temp
type temp file1.txt > out.txt
Run Code Online (Sandbox Code Playgroud)

或者你可以使用copy.了解copy /?更多.

copy /b temp+file1.txt  out.txt
Run Code Online (Sandbox Code Playgroud)

  • 我想补充说,如果你想连接所有文件,你可以做`copy/b*.txt combined.txt`,而不必单独列出文件. (15认同)
  • 当然!我宁愿避免使用临时文件.我试图使用括号,管道和<将它放入一个命令,但无法到达任何地方.`copy`命令要快得多,但它会在最后添加一个SUB字符.有办法避免这种情况吗? (4认同)
  • @ ghostdog74:我认为它必须是`type file1.txt temp> out.txt`来实际附加第二个文件,而没有标题到第一个文件 (3认同)

Raj*_*ore 61

我用它,它对我很有用:

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

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

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

  • 当我输入连接文件的文件名时,这意味着它在loaction(字母顺序)中的文件末尾列出,那么windows似乎连接了两次!我最终使用1filename.csv的文件名来解决问题.我想连接到一个不同的文件夹也应该工作... (2认同)

Joh*_*nan 21

我没有足够的声誉点来评论使用的建议*.csv >> ConcatenatedFile.csv,但我可以添加警告:

如果ConcatenatedFile.csv在用于连接的同一目录中创建文件,则会将其添加到自身.

  • 这是如何跳过OP询问的file2中的第一行? (2认同)

小智 6

使用FOR命令逐行回显文件,并使用'skip'选项错过许多起始行...

FOR /F "skip=1" %i in (file2.txt) do @echo %i
Run Code Online (Sandbox Code Playgroud)

您可以重定向批处理文件的输出,包含类似...的内容

FOR /F %%i in (file1.txt) do @echo %%i
FOR /F "skip=1" %%i in (file2.txt) do @echo %%i
Run Code Online (Sandbox Code Playgroud)

注意在批处理文件中使用FOR变量时的double%.


Wal*_*ldo 5

执行此操作的方法如下:

(type file1.txt && more +1 file2.txt) > out.txt
Run Code Online (Sandbox Code Playgroud)