情境: 在白天,在网络上的特定文件夹中创建了几个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
答案 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
您需要更改sourcedir
和destdir
的设置以适合您的具体情况。
我使用了一些名为q45178448*.txt
的文件,其中包含一些虚拟数据供我测试。您需要输入所需的文件掩码来替换此值。
生成定义为%outfile%
的文件问题似乎是生成的.txt
文件没有终端换行符,因此这个过程只是在内存中生成所需文件的列表,然后串行type
s到目的地每个echo
之后插入的换行符。
- 编辑201708041820
sourcedir
不应该在filename1
- 仅有效,因为我已将.
用于sourcedir
。
答案 1 :(得分:-1)
对于Linux上的任何人来说,这都是一个非常简单的问题,你只需要编写,
ls *.txt | xargs awk 1 >IMPORT.txt
幸运的是,这些工具现在可以在Windows 10命令行上使用,所以试试看它是否有效?