如何把一个压缩好的文件,拆分成几个压缩文件?

如何把一个压缩好的文件,拆分成几个压缩文件?... 如何把一个压缩好的文件,拆分成几个压缩文件? 展开
 我来答
百度网友028baadc7
2012-12-27 · TA获得超过957个赞
知道小有建树答主
回答量:1086
采纳率:0%
帮助的人:840万
展开全部
再次对文件压缩,过程中设定使用分卷压缩同时设定分卷大小。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2019-12-10
展开全部
日。扯淡,需要重新解压再分卷,还问你们干嘛
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
颖颖情感随笔录

2019-12-22 · 分享正能量情感动态,一起探讨生活的真谛
颖颖情感随笔录
采纳数:5765 获赞数:11495

向TA提问 私信TA
展开全部
把一个压缩好的文件拆分成几个压缩文件,可以在乐秀软件上拆分。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
华阳咨询
2020-08-03 · TA获得超过118个赞
知道小有建树答主
回答量:247
采纳率:73%
帮助的人:34.1万
展开全部
如果Linux环境可以使用split与cat命令来操作,下面以分拆为1G大小文件为例:
拆分:split -b 1024m -d xxxx.rar xxxx.rar.part_ --verbose
合并:cat xxxx.rar.part_* xxxx.rar
如果Windows环境可以使用PowerShell来完成,如下(内容来自网络):
# 先导入 函数 Split-Merge-File
. 'E\Split-Merge-File.ps1' #注意句号和脚本之间有空格
# 将文件 ‘E:\win2012.vhdx’ 分割成20个小文件,输出至目录 'E:\VHD'
Split-File -File 'E:\win2012.vhdx' -ByPartCount -PartCount 20 -OutputDir 'E:\VHD'

# 将件‘E:\win2012.vhdx’按照每个大小 500MB 来分割,输出至目录 'E:\VHD'
Split-File -File 'E:\win2012.vhdx' -ByPartLength -PartLength 500MB -OutputDir 'E:\VHD'

# 将 'E:\VHD' 目录下包含 part 的所有文件合并,输出为 单个文件 'E:\win2012-2.vhdx'
Merge- File -SourceDir 'E:\VHD' -Filter "*part*" -OutputFile 'E:\win2012-2.vhdx'

将以下内容保存为PowerShell文件,文件名:Split-Merge-File.ps1
#################################################
# Obtain a suitable buffer length by partial file length
function Get-BufferLength ([int]$partialFileLength)
{
[int]$MinBufferLength = 1MB
# No need to consume great amount memory,initialize as 50M, you can adjust it from here.
[int]$MaxBufferLength = 50MB

if($partialFileLength -ge 1GB) { return $MaxBufferLength}
elseif( $partialFileLength -le 50MB) { return $MinBufferLength }
else{ return [int]( $MaxBufferLength/1GB * $partialFileLength )}
}

# Write partial stream to file from current position
function Write-PartialStreamToFile
{
param(
[IO.FileStream]$stream,
[long]$length,
[string]$outputFile
)

#copy stream to file
function Copy-Stream( [int]$bufferLength )
{
[byte[]]$buffer = New-Object byte[]( $bufferLength )

# Read partial file data to memory buffer
$stream.Read($buffer,0,$buffer.Length) | Out-Null

# Flush buffer to file
$outStream = New-Object IO.FileStream($outputFile,'Append','Write','Read')
$outStream.Write($buffer,0,$buffer.Length)
$outStream.Flush()
$outStream.Close()
}

$maxBuffer = Get-BufferLength $length
$remBuffer = 0
$loop = [Math]::DivRem($length,$maxBuffer,[ref]$remBuffer)

if($loop -eq 0)
{
Copy-Stream $remBuffer
return
}

1..$loop | foreach {
$bufferLength = $maxBuffer

# let last loop contains remanent length
if( ($_ -eq $loop) -and ($remBuffer -gt 0) )
{
$bufferLength = $maxBuffer + $remBuffer
}
Copy-Stream $bufferLength

# show outer progress
$progress = [int]($_*100/$loop)
write-progress -activity 'Writting file' -status 'Progress' -id 2 -percentcomplete $progress -currentOperation "$progress %"
}
}

# split a large file into mutiple parts by part count or part length
function Split-File
{
param(
[Parameter(Mandatory=$True)]
[IO.FileInfo]$File,
[Switch]$ByPartCount,
[Switch]$ByPartLength,
[int]$PartCount,
[int]$PartLength,
[IO.DirectoryInfo]$OutputDir = '.'
)

# Argument validation
if(-not $File.Exists) { throw "Source file [$File] not exists" }
if(-not $OutputDir.Exists) { mkdir $OutputDir.FullName | Out-Null}
if( (-not $ByPartCount) -and (-not $ByPartLength) )
{
throw 'Must specify one of parameter, [ByPartCount] or [ByPartLength]'
}
elseif( $ByPartCount )
{
if($PartCount -le 1) {throw '[PartCount] must larger than 1'}
$PartLength = $File.Length / $PartCount
}
elseif( $ByPartLength )
{
if($PartLength -lt 1) { throw '[PartLength] must larger than 0' }
if($PartLength -ge $File.Length) { throw '[PartLength] must less than source file' }
$temp = $File.Length /$PartLength
$PartCount = [int]$temp
if( ($File.Length % $PartLength) -gt 0 -and ( $PartCount -lt $temp ) )
{
$PartCount++
}
}

$stream = New-Object IO.FileStream($File.FullName,
[IO.FileMode]::Open ,[IO.FileAccess]::Read ,[IO.FileShare]::Read )

# Make sure each part file name ended like '001' so that it's convenient to merge
[string]$numberMaskStr = [string]::Empty.PadLeft( [int]([Math]::Log10($PartCount) + 1), "0" )

1 .. $PartCount | foreach {
$outputFile = Join-Path $OutputDir ( "{0}.part_{1} " -f $File.Name , $_.ToString( $numberMaskStr ) )
# show outer progress
$progress = [int]($_*100/$PartCount)
write-progress -activity "Splitting file" -status "Progress $progress %" -Id 1 -percentcomplete $progress -currentOperation "Handle file $outputFile"
if($_ -eq $PartCount)
{
Write-PartialStreamToFile $stream ($stream.Length - $stream.Position) $outputFile
}
else
{
Write-PartialStreamToFile $stream $PartLength $outputFile
}
}
$stream.Close()
}

function Merge-File
{
param(
[Parameter(Mandatory=$True)]
[IO.DirectoryInfo]$SourceDir,
[string]$Filter,
[IO.FileInfo]$OutputFile
)

# arguments validation
if ( -not $SourceDir.Exists ) { throw "Directory $SourceDir not exists." }
$files = dir $SourceDir -File -Filter $Filter
if($files -eq $null){ throw "No matched file in directory $SourceDir"}

# output stream
$outputStream = New-Object IO.FileStream($OutputFile.FullName,
[IO.FileMode]::Append ,[IO.FileAccess]::Write ,[IO.FileShare]::Read )

# merge file
$files | foreach{
#input stream
$inputStream = New-Object IO.FileStream($_.FullName,
[IO.FileMode]::Open ,[IO.FileAccess]::Read ,[IO.FileShare]::Read )

$bufferLength = Get-BufferLength -partialFileLength $_.Length
while($inputStream.Position -lt $inputStream.Length)
{
if( ($inputStream.Position + $bufferLength) -gt $inputStream.Length)
{
$bufferLength = $inputStream.Length - $inputStream.Position
}

# show outer progress
$progress = [int]($inputStream.Position *100/ $inputStream.Length)
write-progress -activity 'Merging file' -status "Progress $progress %" -percentcomplete $progress

# read file to memory buffer
$buffer= New-Object byte[]( $bufferLength )
$inputStream.Read( $buffer,0,$buffer.Length) | Out-Null

#flush buffer to file
$outputStream.Write( $buffer,0,$buffer.Length) | Out-Null
$outputStream.Flush()
}
$inputStream.Close()
}
$outputStream.Close()
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
司马nd
2019-12-22 · TA获得超过1034个赞
知道小有建树答主
回答量:4614
采纳率:31%
帮助的人:255万
展开全部
压缩好的文件已经不能再分开,你要在压缩的时候选择分卷压缩,这样它才会压缩成几个包。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式