powershell压缩与解压缩zip文件
powershell一些小使用技巧能在开发过程中带来便捷。
powerShell v5 以前
这里先介绍powershell v5之前的做法:
1.解压缩zip
function UnzipFile([string]$souceFile, [string]$targetFolder)
{
if(!(Test-Path $targetFolder))
{
mkdir $targetFolder
}
$shellApp = New-Object -ComObject Shell.Application
$files = $shellApp.NameSpace($souceFile).Items()
#下面这句会删除已解压的,但不会影响目录内其它不相干的文件
$files|%{if (Test-Path ("$targetFolder/{0}" -f $_.name )){Remove-Item ("$targetFolder/{0}" -f $_.name) -Force -Recurse}}
$shellApp.NameSpace($targetFolder).CopyHere($files)
}
usage:UnzipFile "C:\Users\Administrator\Desktop\test.zip" "C:\Users\Administrator\Desktop\"
2.压缩zip
powershell在v5之前没有直接进行压缩的方法,不过可以通过调用其他压缩工具或者依赖第三方库的方式来压缩,不过看起来就没那么优雅~
powerShell v5 中的改进
不得不说powershell让压缩和解压缩变得更简单了。
Compress-Archive 和 Expand-Archive cmdlets 是 PowerShell v5 中的一大改进,大家看名字应该就不难猜出其功能,使用起来也非常简单。
#将文件或文件夹test压缩为test.zip
Compress-Archive -Path D:\test -DestinationPath E:\test.zip
#将文件test.zip解压到test目录下
Expand-Archive -Path E:\test.zip -DestinationPath F:\test
是吧,一句代码搞定~
小结
v5版本之前的解压缩做法较v5版本的更加灵活,可以继续扩展脚本,同时能避免解压文件已经存在的冲突。
所以本人还是倾向于老版解压做法配合新版压缩方法。