如何将具有不同文件名的多个txt文件成功合并到一个txt文件中?

时间:2017-07-18 23:01:37

标签: batch-file

情境: 在白天,在网络上的特定文件夹中创建了几个txt文件。这些txt文件都是不同的名称。然后将运行批处理文件,该文件将所有txt文件合并到一个主txt文件中。

到目前为止我做了什么: 我最接近完成此操作的方法是在包含以下脚本的同一网络文件夹中运行批处理文件

copy /b *.txt IMPORT.txt

问题: " IMPORT.txt"文件将无法在先前数据的正下方成功添加每个文件的内容。它有时只会将它添加到前一个数据集中的最后一个单词。

示例:

文件1命名为" n5z.txt" 该文件的内容是

John, Doe

文件2被命名为" po6.txt" 该文件的内容是

Jane, Doe
George, Washington

文件3命名为" xyz.txt" 该文件的内容是

John, Adams
Betty, White
Tom, Petty
Chris, White

然后我打开位于运行以下脚本的同一文件夹中的Windows批处理文件(.bat)

copy /b *.txt IMPORT.txt

结果是一个名为" IMPORT.txt"的文件。 该文件的内容如下所示

John, DoeJane, Doe
George, WashingtonJohn, Adams
Betty, White
Tom, Petty
Chris, White

我需要它看起来像这样

John, Doe
Jane, Doe
George, Washington
John, Adams
Betty, White
Tom, Petty
Chris, White

2 个答案:

答案 0 :(得分:2)

@ECHO OFF
SETLOCAL
SET "sourcedir=."
SET "destdir=U:\destdir"
SET "filename1=q45178448*.txt"
SET "outfile=%destdir%\outfile.txt"
(
FOR /f "delims=" %%a IN (
 'dir /b /a-d "%sourcedir%\%filename1%" '
 ) DO (
 TYPE "%sourcedir%\%%a"
 ECHO.
)
)>"%outfile%"

GOTO :EOF

您需要更改sourcedirdestdir的设置以适合您的具体情况。

我使用了一些名为q45178448*.txt的文件,其中包含一些虚拟数据供我测试。您需要输入所需的文件掩码来替换此值。

生成定义为%outfile%

的文件

问题似乎是生成的.txt文件没有终端换行符,因此这个过程只是在内存中生成所需文件的列表,然后串行type s到目的地每个echo之后插入的换行符。

- 编辑201708041820

sourcedir 应该在filename1 - 仅有效,因为我已将.用于sourcedir

答案 1 :(得分:-1)

尝试使用Bash-for-Windows的东西

对于Linux上的任何人来说,这都是一个非常简单的问题,你只需要编写,

ls *.txt | xargs awk 1 >IMPORT.txt

幸运的是,这些工具现在可以在Windows 10命令行上使用,所以试试看它是否有效?