轉並學習: 將rar文件轉換爲zip格式

【轉自】http://www.cnblogs.com/Icebird/archive/2008/02/13/1068148.html

[PowerShell] 將rar文件轉換爲zip格式

None.gif# Author: Icebird@cnblogs
None.gif#
 Purpose: RAR2ZIP
None.gif

None.gif
function Global:rar2zip($rarfile = $(throw "缺少參數"), $zipfile = "")
None.gif{
None.gif
None.gif
trap
None.gif{
None.gif  
$_.InvocationInfo
None.gif  write
-host ("{0,-17:S}{1} {2}" -f "Exception"":"$_.Exception.Message)
None.gif  
break
None.gif}
None.gif
None.gif
function exist($path$name)
None.gif{
None.gif    
return (dir $path | ? { $_.Name -eq $name } | measure-object).Count -gt 0
None.gif}
None.gif
None.gif
function deltree($path$name)
None.gif{
None.gif    
if (exist "$path" "$name")
None.gif    {
None.gif        del 
"$path/$name" -recurse
None.gif    }
None.gif}
None.gif
None.gif
$s = gp hklm:/Software/Classes/WinRAR/shell/open/command | findstr "(default)"
None.gif
if ($s -eq $null)
None.gif{
None.gif    
return "請先安裝WinRAR"
None.gif}
None.gif[regex] 
$regex = "`"(.+?)`""
None.gif
$rar = ($regex.matches($s))[0].Groups[1].Value -replace "WinRAR.exe","RAR.exe"
None.gif
None.gif
None.gif
$s = dir "$rarfile"
None.gif
if ($s -eq $null)
None.gif{
None.gif    
return "$rarfile 不存在"
None.gif}
None.gif
None.gif
$tempdir = ${env:Temp} + "/rar2zip"
None.gifdeltree 
${env:Temp} "rar2zip"
None.gifmd 
$tempdir > $null
None.gif
&$rar x "$rarfile" "$tempdir"
None.gif
None.gif
if ($zipfile -eq "")
None.gif{
None.gif    
if ($rarfile -match ".rar$")
None.gif    {
None.gif        
$zipfile = $rarfile -replace ".rar$",".zip"
None.gif    }
None.gif    
else
None.gif    {
None.gif        
$zipfile = $rarfile + ".zip"
None.gif    }
None.gif}
None.gifpkzip25 
-add -max -rec -path=relative "$zipfile" "$tempdir/*.*"
None.gifdeltree 
${env:Temp} "rar2zip"
None.gif}
None.gif

這段腳本將增加一個全局函數rar2zip,用途是將rar文件轉換成zip文件

注意:
1. 需要安裝WinRAR
2. PKZIP25.EXE在搜索路徑裏的任意目錄內


Usage:

rar2zip mydoc.rar
rar2zip mydoc.rar doc.zip

pkzip25.exe下載:
http://files.cnblogs.com/Icebird/PKZIP25.rar
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章