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.
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:
Editor’s note: In the cross-platform PowerShell (Core) edition (version 6 and up),
-AsByteStreammust now be used instead of-Encoding Byte; also, thescalias for theSet-Contentcmdlet 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.