Combining Files in PowerShell
If you need to combine text files in cmd.exe, you would issue the following command:
copy file1.txt+file2.txt+file3.txt combined_files.txt
If you wish to do the same for binary files, you would use the following command:
copy /b file1.bin+file2.bin+file3.bin combined_files.bin
To do the same in PowerShell is pretty straightforward. If the destination file does not already exist or already contains content, you’ll want to issue the New-Item command first. If you know it doesn’t exist or is empty, you can skip that line, below.
New-Item -ItemType file ".\combined_files.txt" –force
Get-Content .\file?.txt | Add-Content .\combined_files.txt
Thanks to Gerardo Lopez for his “Combine or Join Two Text Files Using PowerShell” article, which is the basis for this information.
Rob
Comments
Anonymous
January 22, 2014
I'd suggest another algorythm for BIG files. I tried your version for 30 files with a sum of 1,6 GB data and ran into a RAM limitation. New-Item -ItemType file ".combined_files.txt" –force Get-ChildItem -filter "file?.txt" | %{ Get-Content $_ | Add-Content .combined_files.txt }Anonymous
April 12, 2014
The comment has been removedAnonymous
May 21, 2014
Thanks to both of you for the feedback!Anonymous
November 02, 2014
None of your items worked for me. This is what actually worked since I just used it: Get-ChildItem -recurse -include "*.txt" | % { Get-Content $_ -ReadCount 0 | Add-Content .combined_files.txt }Anonymous
May 06, 2016
Hi Robert,Just found this very useful post. Any advice on how to exclude the header row for all files except the first?Anonymous
June 29, 2016
The comment has been removed- Anonymous
June 29, 2016
Sorry, with a filtering it's like this:ls "file?.txt" | cat > combined_files.txtThe command above always replace the combined_files.txt. If you wish to append then just replace > with >>.ls "file?.txt" | cat >> combined_files.txt
- Anonymous