是否可以使用PowerShell创建zip存档?
当前回答
安装7zip(或下载命令行版本)并使用PowerShell方法:
function create-7zip([String] $aDirectory, [String] $aZipfile){
[string]$pathToZipExe = "$($Env:ProgramFiles)\7-Zip\7z.exe";
[Array]$arguments = "a", "-tzip", "$aZipfile", "$aDirectory", "-r";
& $pathToZipExe $arguments;
}
你可以这样调用它:
create-7zip "c:\temp\myFolder" "c:\temp\myFolder.zip"
其他回答
下面是工作代码,压缩源文件夹中的所有文件,并在目标文件夹中创建一个zip文件。
$DestZip="C:\Destination\"
$Source = "C:\Source\"
$folder = Get-Item -Path $Source
$ZipTimestamp = Get-Date -format yyyyMMdd-HHmmss;
$ZipFileName = $DestZip + "Backup_" + $folder.name + "_" + $ZipTimestamp + ".zip"
$Source
set-content $ZipFileName ("PK" + [char]5 + [char]6 + ("$([char]0)" * 18))
# Wait for the zip file to be created.
while (!(Test-Path -PathType leaf -Path $ZipFileName))
{
Start-Sleep -Milliseconds 20
}
$ZipFile = (new-object -com shell.application).NameSpace($ZipFileName)
Write-Output (">> Waiting Compression : " + $ZipFileName)
#BACKUP - COPY
$ZipFile.CopyHere($Source)
$ZipFileName
# ARCHIVE
Read-Host "Please Enter.."
PowerShell v5.0增加了压缩-归档和扩展-归档cmdlet。链接页面有完整的例子,但它的要点是:
# Create a zip file with the contents of C:\Stuff\
Compress-Archive -Path C:\Stuff -DestinationPath archive.zip
# Add more files to the zip file
# (Existing files in the zip file with the same name are replaced)
Compress-Archive -Path C:\OtherStuff\*.txt -Update -DestinationPath archive.zip
# Extract the zip file to C:\Destination\
Expand-Archive -Path archive.zip -DestinationPath C:\Destination
对于压缩,我会使用库(如Michal所建议的,7-Zip很好)。
如果安装7-Zip,安装目录将包含7z.exe,这是一个控制台应用程序。 您可以直接调用它,并使用您想要的任何压缩选项。
如果您希望使用DLL,那也应该是可能的。 7-Zip是免费的开源软件。
Windows下压缩解压目录的完整命令行如下:
压缩: powershell.exe -nologo -noprofile -command "&{添加- type -A 'System.IO.Compression.FileSystem';[IO.Compression.ZipFile]:: CreateFromDirectory (C: \印度河,“C: \ Indus.zip”);}” 提取: powershell.exe -nologo -noprofile -command "& {Add-Type -A 'System.IO.Compression.FileSystem';[IO.Compression.ZipFile]::ExtractToDirectory('C:\ industrial .zip','C:\Indus');}”
下面是PowerShell v5的原生解决方案,使用cmdlet压缩-归档使用PowerShell创建Zip文件。
请参见微软文档 Compress-Archive。
示例1:
Compress-Archive `
-LiteralPath C:\Reference\Draftdoc.docx, C:\Reference\Images\diagram2.vsd `
-CompressionLevel Optimal `
-DestinationPath C:\Archives\Draft.Zip
示例2:
Compress-Archive `
-Path C:\Reference\* `
-CompressionLevel Fastest `
-DestinationPath C:\Archives\Draft
示例3:
Write-Output $files | Compress-Archive -DestinationPath $outzipfile
推荐文章
- 调用webrequest, POST参数
- 无法加载.ps1,因为在此系统上禁止执行脚本
- 是否有一个类似拉链的功能,垫到最长的长度?
- 如何获得正在执行的cmdlet的当前目录
- 如何从批处理文件运行PowerShell脚本
- 如何从PowerShell中的外部进程捕获输出到变量?
- tar和zip的区别是什么?
- 如何将PowerShell的输出重定向到执行期间的文件
- 如何告诉PowerShell等待每个命令结束后才开始下一个?
- 什么是一个好的Java库来压缩/解压缩文件?
- Xcode -但是…我们的档案在哪里?
- 如何创建一个压缩档案与PowerShell?
- BitBucket -下载ZIP格式的源代码
- $_在PowerShell中是什么意思?
- 如何使用get - childitem只获取目录?