压缩 7zip 每个对象
Compress-7zip each object
我正在尝试生成一个脚本,该脚本转到目录并将每个文件压缩为与文件同名的 .zip。
我使用压缩存档进行管理,但它对最大 2gb 的文件有限制。
所以搜索,我找到了 compress-7zip,但它使用不同的参数。
$InputFolder= "C:\Temp\teste"
$OutputFolder="C:\Temp\teste"
#coletando arquivos
$CsvFiles = Get-ChildItem $InputFolder -Filter '*.xlsx'
#loop compactar arquivos
$CsvFiles | ForEach-Object {
$zipSetName = $_.BaseName + ".zip"
Compress-7zip -Path $InputFolder -Format Zip -ArchiveFileName $zipSetName
}
但是我用 compress-7zip 没有成功,上面的脚本不起作用嘿嘿,我是不是传递了错误的参数?手动执行它是可行的,但是将所有文件放入一个文件中。
有人可以帮我使上面的脚本工作,它逐个文件压缩。
您可以阅读您提到的函数 here,包括参数名称。
在这种情况下,使用
$CsvFiles | ForEach-Object {
$zipSetName = [System.IO.Path]::ChangeExtension($_.FullName, '.zip')
Compress-7zip -FullName $_.FullName -OutputFile $zipSetName -ArchiveType Zip
}
P.S。我这里使用了 ChangeExtension
方法,因为你的输入和输出路径都是一样的。
如果不是这种情况,请使用
$zipSetName = Join-Path -Path $OutputFolder -ChildPath ($_.BaseName + '.zip')
我正在尝试生成一个脚本,该脚本转到目录并将每个文件压缩为与文件同名的 .zip。
我使用压缩存档进行管理,但它对最大 2gb 的文件有限制。
所以搜索,我找到了 compress-7zip,但它使用不同的参数。
$InputFolder= "C:\Temp\teste"
$OutputFolder="C:\Temp\teste"
#coletando arquivos
$CsvFiles = Get-ChildItem $InputFolder -Filter '*.xlsx'
#loop compactar arquivos
$CsvFiles | ForEach-Object {
$zipSetName = $_.BaseName + ".zip"
Compress-7zip -Path $InputFolder -Format Zip -ArchiveFileName $zipSetName
}
但是我用 compress-7zip 没有成功,上面的脚本不起作用嘿嘿,我是不是传递了错误的参数?手动执行它是可行的,但是将所有文件放入一个文件中。 有人可以帮我使上面的脚本工作,它逐个文件压缩。
您可以阅读您提到的函数 here,包括参数名称。
在这种情况下,使用
$CsvFiles | ForEach-Object {
$zipSetName = [System.IO.Path]::ChangeExtension($_.FullName, '.zip')
Compress-7zip -FullName $_.FullName -OutputFile $zipSetName -ArchiveType Zip
}
P.S。我这里使用了 ChangeExtension
方法,因为你的输入和输出路径都是一样的。
如果不是这种情况,请使用
$zipSetName = Join-Path -Path $OutputFolder -ChildPath ($_.BaseName + '.zip')