在一个文件中组合具有相同名称的文本文件

时间:2018-01-16 16:09:21

标签: java batch-file text merge

我有大约1000个同名但内容不同的文本文件。我想根据他们的名字合并它们。 例如

Company1.txt ,Company1.txt,Company1.txt 

Company2.txt, Company2.txt

Company3.txt, Company3.txt, Company3.txt, Company3.txt

Company1的所有实例都包含不同的内容。我想将所有Company1.txt合并到一个文件中,并希望对Company2.txt,Company3.txt等重复相同的操作。

我该怎么办?

Company1.txt is present in D:\TextFiles\Part1
Company1.txt is present in D:\TextFiles\Part2
Company1.txt is present in D:\TextFiles\Part3

其他文本文件的情况也是如此。

1 个答案:

答案 0 :(得分:1)

我创建了一个临时文件夹:mergeTestFiles,然后是三个子文件夹:part1,part2,part3 然后在每个文件夹中我创建了一个:Doc1.txt文件:

The Doc1.txt in the part1 folder has the line: "part 1"
The Doc1.txt in the part2 folder has the line: "part 2"
The Doc1.txt in the part3 folder has the line: "part 3"

即: mergeTestFiles \ part1的\ Doc1.txt

在电源shell中 - 这是文件结构。

PS C:\ temp \ mergeTestFiles> ls -Recurse

Directory: C:\temp\mergeTestFiles

模式LastWriteTime长度名称
---- ------------- ------ ----
d ---- 16/01/2018 16:26 part1
d ---- 16/01/2018 16:26第2部分 d ---- 16/01/2018 16:26 part3

Directory: C:\temp\mergeTestFiles\part1

模式LastWriteTime长度名称
---- ------------- ------ ----
-a --- 16/01/2018 16:27 18 Doc1.txt

Directory: C:\temp\mergeTestFiles\part2

模式LastWriteTime长度名称
---- ------------- ------ ----
-a --- 16/01/2018 16:27 18 Doc1.txt

Directory: C:\temp\mergeTestFiles\part3

模式LastWriteTime长度名称
---- ------------- ------ ----
-a --- 16/01/2018 16:27 18 Doc1.txt

在power shell中我可以运行:

Get-Content .\part*\Doc1.txt
part 1
part 2
part 3

显示合并在一起的所有内容(注意路径中的*)

希望这有帮助

如果你的某个文件夹上有一套完整的文件,你可以使用他们的文件名来驱动它。

注意:子文件夹part1有一个所有文件的实例,因此我们将使用它来获取名称,并驱动合并。

像这样:    Foreach(ls part1中的$​​文件){Get-Content。\ part * \ $ file}

我已将Doc2.txt添加到part1子文件夹。

PS C:\temp\mergeTestFiles> Foreach($file in ls part1) { Get-Content .\part*\$file }
part 1
part 2
part 3
file Doc2.txt in part1 subfolder

如果您的文件名格式相同

即。 公司{number} .txt

  • 在你的问题中你可以使用这样的范围:

    Foreach(1..10中的$ file){Get-Content。\ part * \ Doc $ file.txt}

这也将确保合并中文件的排序