Сжать-7zip каждый объект - PullRequest
0 голосов
/ 25 мая 2020

Я пытаюсь создать сценарий, который переходит в каталог и сжимает каждый файл в .zip с тем же именем, что и файл. файлы размером до 2 ГБ.

поискав, я нашел 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, указанное выше скрипт не работает хе-хе, я передаю неправильные параметры? выполнение этого вручную работает, однако все файлы помещаются в один файл. может ли кто-нибудь помочь мне заставить работать вышеуказанный скрипт, который сжимает файл за файлом.

1 Ответ

1 голос
/ 25 мая 2020

Вы можете прочитать функцию, которую вы упомянули здесь , включая имена параметров.

В этом случае используйте

$CsvFiles | ForEach-Object { 
    $zipSetName = [System.IO.Path]::ChangeExtension($_.FullName, '.zip')
    Compress-7zip -FullName $_.FullName -OutputFile $zipSetName -ArchiveType Zip 
}

PS Я использовал ChangeExtension здесь, потому что оба пути ввода и вывода одинаковы. Если это не так, используйте

$zipSetName = Join-Path -Path $OutputFolder -ChildPath ($_.BaseName + '.zip')
...