我正在按以下方式使用Compress-Archive创建一个包含3个文件和2个目录(及其所有子目录)的zip文件
Compress-Archive -CompressionLevel Fastest -Force -DestinationPath ./My.zip -Path .\foo.ini,
.\bar.exe,
.\README.TXT,
.\dir1,
.\dir2
不幸的是,它非常慢。我想使用7-Zip(更快)来创建一个zip文件。我一直在尝试使用Powershell附加组件Compress-7Zip
进行压缩。同样不幸的是,我无法弄清楚如何使用Compress-7Zip
仅获取指定的文件。我以为我可以用所有可以插入Compress-7Zip
的文件填充变量。
$stuff = ??? .\foo.ini,
.\bar.exe,
.\README.TXT,
.\dir1,
.\dir2
#$stuff now contains 3 txt files in the root and the complete contents
#dir\ and \dir2 with their paths
$stuff | Compress-7Zip -Format Zip -ArchiveFileName .\my.zip
如何使用Get-Child-Item(或其他方式)将目录结构放入$ stuff?
或者,如果您还有其他建议使用比“压缩存档”更好的压缩方法来创建此zip,那么我很高兴。
答案 0 :(得分:0)
几件事...
(在最后一个带有Compress-7Zip的代码段中)您似乎要尝试(splat)[https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_splatting?view=powershell-6]:
这可能对您没有帮助,对不起,我找不到Compress-Archive
进行确认的文档。它看起来像是在使用字符串数组。因此,如果您将所有这些文件填充到字符串数组中……
$files_to_compress = @(
'.\foo.ini'
'.\bar.exe'
'.\README.TXT'
'.\dir1'
'.\dir2'
)
您可能可以执行以下操作...
Compress-Archive -CompressionLevel Fastest `
-Force -DestinationPath ./My.zip `
-Path $files_to_compress
希望这个例子有意义。