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

Batch file 如何将具有不同文件名的多个txt文件成功合并到一个txt文件中?,batch-file,Batch File,场景: 白天,会在网络上的特定文件夹中创建几个txt文件。这些txt文件都是不同的名称。然后将运行一个批处理文件,该批处理文件将所有txt文件合并到一个主txt文件中 到目前为止我所做的: 我最接近实现这一点的方法是在同一个网络文件夹中运行一个批处理文件,其中包含以下脚本 copy /b *.txt IMPORT.txt copy /b *.txt IMPORT.txt 问题: “IMPORT.txt”文件不会成功地将每个文件的内容直接添加到先前数据的下方。它有时只会将其添加到上一个数据集中

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

到目前为止我所做的: 我最接近实现这一点的方法是在同一个网络文件夹中运行一个批处理文件,其中包含以下脚本

copy /b *.txt IMPORT.txt
copy /b *.txt IMPORT.txt
问题: “IMPORT.txt”文件不会成功地将每个文件的内容直接添加到先前数据的下方。它有时只会将其添加到上一个数据集中的最后一个单词中

例如:

文件1名为“n5z.txt” 该文件的内容是

John, Doe
Jane, Doe
George, Washington
John, Adams
Betty, White
Tom, Petty
Chris, White
文件2名为“po6.txt” 该文件的内容是

John, Doe
Jane, Doe
George, Washington
John, Adams
Betty, White
Tom, Petty
Chris, White
文件3名为“xyz.txt” 该文件的内容是

John, Doe
Jane, Doe
George, Washington
John, Adams
Betty, White
Tom, Petty
Chris, White
然后打开Windows批处理文件(.bat),该文件位于运行以下脚本的同一文件夹中

copy /b *.txt IMPORT.txt
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
我需要它看起来像这样

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
尝试一下Bash中的Windows内容 对于Linux上的任何人来说,这都是一个非常简单的问题,您只需编写

ls *.txt | xargs awk 1 >IMPORT.txt
幸运的是,这些工具现在可以在Windows 10命令行上使用,所以只要尝试一下,看看它是否有效?

@ECHO OFF
SETLOCAL
设置“sourcedir=”
设置“destdir=U:\destdir”
设置“filename1=q45178448*.txt”
设置“outfile=%destdir%\outfile.txt”
(
对于/f“delims=”%%a IN(
'dir/b/a-d“%sourcedir%\%filename1%”
)做(
键入“%sourcedir%\%%a”
回声。
)
)>“%outfile%”
后藤:EOF
您需要更改
sourcedir
destdir
的设置以适应您的环境

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

生成定义为%outfile%的文件

问题似乎是生成的
.txt
文件没有终端换行符,因此此过程只是在内存中生成所需文件的列表,按顺序
键入
s,然后通过
echo
插入换行符到达目的地

--编辑201708041820


sourcedir
应该
filename1
中-之所以有效,是因为我在
sourcedir
中使用了

在这种情况下,“将其添加到最后一个单词”是什么意思?您是否可以自由选择不同的文件名,以便
IMPORT.txt
不会被
*.txt
通配符捕获?通过“批处理”,我假设您指的是Windows.bat文件。还有哪些脚本语言/工具可供使用?你能使用powershell吗?@CRDrost我想他的意思是上一个文件没有结尾换行符,因此一个文件的第一行与上一个文件的结尾在同一行。类似于@CRDrost所问的,你有什么样的行尾?它们都一致吗?还是有些文件以空行结尾,而其他文件则没有?@CR Drost-我已经添加了一个示例,说明我正在尝试做什么,希望能回答您的问题。谢谢。我会尝试一下,但是我的客户并不总是使用最新版本的Windows。虽然我确信这适用于Windows 10上的实例,但我仍然想找出一种方法,在不特定于版本的情况下实现这一点。你知道怎么做吗?我不知道,而且我无法比你更有效地研究它。嗨@Magoo-我的文件是随机的,没有一致的文件名。我胡乱猜了一下,只去掉了“'q45178448'”而只留下“*.txt'”。不幸的是,我刚得到一个空白的文本文件。有什么建议吗?我错过了在
目录
行粘贴结束的
-您的更改非常正确-
*.txt
表示“所有
.txt
文件”。我使用
q?????
参考SO问题编号,以便在出现任何问题时找到所需的代码和数据。我通常直接从批处理中剪切和粘贴代码,所以我很惊讶引用消失了。我想有时候会发生。如果在第一个
line,那么你应该在控制台上找到一个文件列表。它工作了!很好!!这正是我要找的。非常感谢!等一下。输出文件顶部有一个空行。你知道如何更正吗?如果与掩码匹配的第一个文件为空或为空,你会在文件顶部得到一个空行从一个控制Z字符开始,事实上任何这样的文件都会产生一个空行。我看不到你的文件,所以在你的BiLiWik中。如果%%~ZA-NEQ 0 ECHOR.<代码>,你可以改变<代码> ECHEC.<代码> >代码>如果文件长度为零,则不会生成空白行。