是否可以使用PowerShell创建zip存档?
当前回答
最新。net 4.5框架的原生方式,但完全没有特性:
创造:
Add-Type -Assembly "System.IO.Compression.FileSystem" ;
[System.IO.Compression.ZipFile]::CreateFromDirectory("c:\your\directory\to\compress", "yourfile.zip") ;
提取:
Add-Type -Assembly "System.IO.Compression.FileSystem" ;
[System.IO.Compression.ZipFile]::ExtractToDirectory("yourfile.zip", "c:\your\destination") ;
如前所述,完全没有特性,所以不要期望有覆盖标志。
更新:下面是其他开发者多年来在此基础上扩展的内容。
其他回答
如果你安装了WinRAR:
function ZipUsingRar([String] $directory, [String] $zipFileName)
{
Write-Output "Performing operation ""Zip File"" on Target ""Item: $directory Destination:"
Write-Output ($zipFileName + """")
$pathToWinRar = "c:\Program Files\WinRAR\WinRar.exe";
[Array]$arguments = "a", "-afzip", "-df", "-ep1", "$zipFileName", "$directory";
& $pathToWinRar $arguments;
}
参数的含义:afzip创建zip归档,df删除文件,ep1不创建归档内的完整目录路径
给予下面另一种选择。这将压缩一个完整的文件夹,并将归档文件写入具有给定名称的给定路径。
要求。net 3或更高版本
Add-Type -assembly "system.io.compression.filesystem"
$source = 'Source path here'
$destination = "c:\output\dummy.zip"
If(Test-path $destination) {Remove-item $destination}
[io.compression.zipfile]::CreateFromDirectory($Source, $destination)
最新。net 4.5框架的原生方式,但完全没有特性:
创造:
Add-Type -Assembly "System.IO.Compression.FileSystem" ;
[System.IO.Compression.ZipFile]::CreateFromDirectory("c:\your\directory\to\compress", "yourfile.zip") ;
提取:
Add-Type -Assembly "System.IO.Compression.FileSystem" ;
[System.IO.Compression.ZipFile]::ExtractToDirectory("yourfile.zip", "c:\your\destination") ;
如前所述,完全没有特性,所以不要期望有覆盖标志。
更新:下面是其他开发者多年来在此基础上扩展的内容。
function Zip-File
{
param (
[string]$ZipName,
[string]$SourceDirectory
)
Add-Type -Assembly System.IO.Compression.FileSystem
$Compress = [System.IO.Compression.CompressionLevel]::Optimal
[System.IO.Compression.ZipFile]::CreateFromDirectory($SourceDirectory,
$ZipName, $Compress, $false)
}
注意: ZipName:要创建的Zip文件的完整路径。
SourceDirectory:包含要压缩的文件的目录的完整路径。
自最初的答案发布以来,很多事情都发生了变化。下面是一些使用Compress-Archive命令的最新示例。
命令通过压缩Draftdoc.docx和diagram2两个文件来创建新的归档文件Draft.zip。vsd,由Path参数指定。为此操作指定的压缩级别为“最佳”。
Compress-Archive -Path C:\Reference\Draftdoc.docx, C:\Reference\Images\diagram2.vsd -CompressionLevel Optimal -DestinationPath C:\Archives\Draft.Zip
命令通过压缩Draft doc.docx和Diagram[2]这两个文件来创建新的归档文件Draft.zip。vsd,由LiteralPath参数指定。为此操作指定的压缩级别为“最佳”。
Compress-Archive -LiteralPath 'C:\Reference\Draft Doc.docx', 'C:\Reference\Images\Diagram [2].vsd' -CompressionLevel Optimal -DestinationPath C:\Archives\Draft.Zip
命令在C:\Archives文件夹中创建新的归档文件Draft.zip。新的归档文件包含C:\Reference文件夹中的每个文件,因为在Path参数中使用通配符代替了特定的文件名。
Compress-Archive -Path C:\Reference\* -CompressionLevel Fastest -DestinationPath C:\Archives\Draft
命令从整个文件夹C:\Reference创建一个存档
Compress-Archive -Path C:\Reference -DestinationPath C:\Archives\Draft
PowerShell自动将.zip扩展名附加到文件名。
推荐文章
- 如何运行一个PowerShell脚本而不显示窗口?
- PowerShell:仅为单个命令设置环境变量
- 是否有一种方法可以通过双击.ps1文件来使PowerShell脚本工作?
- PowerShell等价于grep -f
- “Write-Host”,“Write-Output”,或“[console]::WriteLine”之间的区别是什么?
- Powershell相当于bash的&号(&),用于分叉/运行后台进程
- PowerShell脚本在机器上返回。net框架的版本?
- Tar归档,从文件列表中获取输入
- 创建一个tar。Xz在一个命令
- 如何在PowerShell中获得MD5校验和
- 如何在PowerShell格式化日期时间
- PowerShell和-contains操作符
- 使用PowerShell删除超过15天的文件
- 数组添加 vs +=
- 致命错误:类“ZipArchive”未在