这个合并文件名的bat代码为何会重复合并两次呢

[code=BatchFile]@echo off
set srcFolder=C:\Users\Administrator\Desktop\新建文件夹 (3)
set dstFolder=C:\Users\Administrator\Desktop\新建文件夹 (3)\合并
for /r "%srcFolder%" %%a in (*.txt) do (
type "%%a" >>"%dstFolder%\%%~nxa"
echo,>>"%dstFolder%\%%~nxa"
)
[/code]

本来只有两个个文件夹,分别是1和2   ,1文件夹内容是 AAAA,2文件夹内容是 BBB

 

合并出来会是:

AAAA

BBBB

AAAA

BBBB

重复合并了一次,怎么修改呢

 

这个批处理代码在遍历源文件夹中的所有文本文件时,会将每个文本文件的内容追加到一个合并文件中。而在每次循环中,代码都会执行追加文件内容和换行符的两行命令:

type "%%a" >>"%dstFolder%\%%~nxa"
echo,>>"%dstFolder%\%%~nxa"

这样就会导致每个文件的内容被追加两次,因为每个文件都会执行这两行命令。
以下是修改后的代码:

@echo off
set srcFolder=C:\Users\Administrator\Desktop\新建文件夹 (3)
set dstFolder=C:\Users\Administrator\Desktop\新建文件夹 (3)\合并

for /r "%srcFolder%" %%a in (*.txt) do (
    type "%%a" >> "%dstFolder%\%%~nxa"
)

echo, >> "%dstFolder%\合并文件.txt"