压缩 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')