[PowerShell] 将rar文件转换为zip格式# Author: Icebird@cnblogs
[PowerShell] 将rar文件转换为zip格式#
 Purpose: RAR2ZIP
[PowerShell] 将rar文件转换为zip格式

[PowerShell] 将rar文件转换为zip格式
function Global:rar2zip($rarfile = $(throw "缺少参数"), $zipfile = "")
[PowerShell] 将rar文件转换为zip格式{
[PowerShell] 将rar文件转换为zip格式
[PowerShell] 将rar文件转换为zip格式
trap
[PowerShell] 将rar文件转换为zip格式{
[PowerShell] 将rar文件转换为zip格式  
$_.InvocationInfo
[PowerShell] 将rar文件转换为zip格式  write
-host ("{0,-17:S}{1} {2}" -f "Exception"":"$_.Exception.Message)
[PowerShell] 将rar文件转换为zip格式  
break
[PowerShell] 将rar文件转换为zip格式}
[PowerShell] 将rar文件转换为zip格式
[PowerShell] 将rar文件转换为zip格式
function exist($path$name)
[PowerShell] 将rar文件转换为zip格式{
[PowerShell] 将rar文件转换为zip格式    
return (dir $path | ? { $_.Name -eq $name } | measure-object).Count -gt 0
[PowerShell] 将rar文件转换为zip格式}
[PowerShell] 将rar文件转换为zip格式
[PowerShell] 将rar文件转换为zip格式
function deltree($path$name)
[PowerShell] 将rar文件转换为zip格式{
[PowerShell] 将rar文件转换为zip格式    
if (exist "$path" "$name")
[PowerShell] 将rar文件转换为zip格式    {
[PowerShell] 将rar文件转换为zip格式        del 
"$path\$name" -recurse
[PowerShell] 将rar文件转换为zip格式    }
[PowerShell] 将rar文件转换为zip格式}
[PowerShell] 将rar文件转换为zip格式
[PowerShell] 将rar文件转换为zip格式
$s = gp hklm:\Software\Classes\WinRAR\shell\open\command | findstr "(default)"
[PowerShell] 将rar文件转换为zip格式
if ($s -eq $null)
[PowerShell] 将rar文件转换为zip格式{
[PowerShell] 将rar文件转换为zip格式    
return "请先安装WinRAR"
[PowerShell] 将rar文件转换为zip格式}
[PowerShell] 将rar文件转换为zip格式[regex] 
$regex = "`"(.+?)`""
[PowerShell] 将rar文件转换为zip格式
$rar = ($regex.matches($s))[0].Groups[1].Value -replace "WinRAR.exe","RAR.exe"
[PowerShell] 将rar文件转换为zip格式
[PowerShell] 将rar文件转换为zip格式
[PowerShell] 将rar文件转换为zip格式
$s = dir "$rarfile"
[PowerShell] 将rar文件转换为zip格式
if ($s -eq $null)
[PowerShell] 将rar文件转换为zip格式{
[PowerShell] 将rar文件转换为zip格式    
return "$rarfile 不存在"
[PowerShell] 将rar文件转换为zip格式}
[PowerShell] 将rar文件转换为zip格式
[PowerShell] 将rar文件转换为zip格式
$tempdir = ${env:Temp} + "\rar2zip"
[PowerShell] 将rar文件转换为zip格式deltree 
${env:Temp} "rar2zip"
[PowerShell] 将rar文件转换为zip格式md 
$tempdir > $null
[PowerShell] 将rar文件转换为zip格式
&$rar x "$rarfile" "$tempdir"
[PowerShell] 将rar文件转换为zip格式
[PowerShell] 将rar文件转换为zip格式
if ($zipfile -eq "")
[PowerShell] 将rar文件转换为zip格式{
[PowerShell] 将rar文件转换为zip格式    
if ($rarfile -match ".rar$")
[PowerShell] 将rar文件转换为zip格式    {
[PowerShell] 将rar文件转换为zip格式        
$zipfile = $rarfile -replace ".rar$",".zip"
[PowerShell] 将rar文件转换为zip格式    }
[PowerShell] 将rar文件转换为zip格式    
else
[PowerShell] 将rar文件转换为zip格式    {
[PowerShell] 将rar文件转换为zip格式        
$zipfile = $rarfile + ".zip"
[PowerShell] 将rar文件转换为zip格式    }
[PowerShell] 将rar文件转换为zip格式}
[PowerShell] 将rar文件转换为zip格式pkzip25 
-add -max -rec -path=relative "$zipfile" "$tempdir\*.*"
[PowerShell] 将rar文件转换为zip格式deltree 
${env:Temp} "rar2zip"
[PowerShell] 将rar文件转换为zip格式}
[PowerShell] 将rar文件转换为zip格式

这段脚本将增加一个全局函数rar2zip,用途是将rar文件转换成zip文件

注意:
1. 需要安装WinRAR
2. PKZIP25.EXE在搜索路径里的任意目录内


Usage:

rar2zip mydoc.rar
rar2zip mydoc.rar doc.zip

pkzip25.exe下载:
https://files.cnblogs.com/Icebird/PKZIP25.rar

相关文章: