Fast and simple binary concatenate files in Powershell

powershell

Solution

The approach you're taking is the way I would do it in PowerShell. However you should use the -ReadCount parameter to improve perf. You can also take advantage of positional parameters to shorten this even further:

gc File1.bin,File2.bin -Encoding Byte -Read 512 | sc new.bin -Encoding Byte

Editor's note: In the cross-platform PowerShell (Core) edition (version 6 and up), `-AsByteStream` must now be used instead of `-Encoding Byte`; also, the `sc` alias for the `Set-Content` cmdlet has been removed.

Regarding the use of the -ReadCount parameter, I did a blog post on this a while ago that folks might find useful - Optimizing Performance of Get Content for Large Files.

Problem

What's the best way of concatenating binary files using Powershell? I'd prefer a one-liner that simple to remember and fast to execute. The best I've come up with is: ``` gc -Encoding Byte -Path ".\File1.bin",".\File2.bin" | sc -Encoding Byte new.bin ``` This seems to work ok, but is terribly slow with large files.

Original source