使用 Powershell 连接二进制文件的最佳方法是什么?我更喜欢简单易记且执行速度快的单行代码。我想到最好的方法是:gc -Encoding Byte -Path \'.\F...
使用 Powershell 连接二进制文件的最佳方法是什么?我更喜欢简单易记、执行速度快的单行代码。
我想到的最好的办法是:
gc -Encoding Byte -Path ".\File1.bin",".\File2.bin" | sc -Encoding Byte new.bin
这似乎可以正常工作,但是对于大文件来说速度非常慢。
您还可以使用此方法来连接任何类型的文件。
不是那么快,但只是另一种方法
cmd /c type file1 file2 file3 file4 > outfile
或者,如果存在多个复制任务,您可以使用作业来加快速度。
$jobs=@()
$Files=@( @("d:\path\app1.rar","d:\path\app2.rar","d:\path\app3.rar","d:\path\appOutFile.rar"),@("c:\users\user\desktop\file1.iso","c:\users\user\desktop\file2.iso","c:\users\user\desktop\file3.iso","c:\users\user\desktop\isoOutFile.iso"),@("c:\users\user\video\video1.mp4","c:\users\user\video\video2.mp4","c:\users\user\video\mp4OutFile.mp4"))
$totalMb=0
foreach($Group in $Files){
$sources=$Group|select -first ($Group.Length-1)
$sources|%{ $totalMb+=(get-Item $_).Length/1mb }
$sources=$(($sources -replace "^|$",[char]34)-join"+")
$destination=[char]34+($Group|select -last 1)+[char]34
cmd /c type nul> $destination
$jobs+=start-job -scriptBlock { param($src,$dst) &cmd.exe "/c copy /b $src $dst" } -arg $sources,$destination
# $jobs+=start-job -scriptBlock { param($src,$dst) &cmd.exe "/c type $($src -replace '`"\+`"','`" `"') > $dst" } -arg $sources,$destination
}
"Total MegaBytes To Concatenate is: $( [math]::Truncate($totalMb) )MB"
while ( $($jobs|% {$_.state -eq "running"}) -contains $true ) {"still concatenating files...";start-sleep -s 2}
"jobs finished !!!";$jobs|receive-job;$jobs|remove-job -force