powershell 解压RAR文件(简易版)
01 前言
为啥要写这个,因为可能有些特殊的环境无法使用RAR的解压软件,因而动手找了一个库然后写了这个脚本,希望有帮助。
02 正文
- 准备:第三方的dll——SharpCompress,可以Down下自行编译。
脚本如下:
<#
解压rar文件 V1
by hokis
2019-11-28测试环境;win10,powershell 5.1
SharpCompress.dll 版本为 dotnet 4.5
#>#rar文件路径
$file = 'D:\test\test.rar'$path = (Get-Location).Path#dll路径
$dll = $($path)+'\SharpCompress.dll'if((-not $file) -or (-not (Test-Path -Path $file))){Write-Host ($file+' 不存在!')exit
}
if(-not (Test-Path -Path $dll)){Write-Host ($dll+' 文件不存在!')exit
}#加载
[void][System.Reflection.Assembly]::LoadFile($dll)$sip = [System.IO.Path]
$sif = [System.IO.File]
if([SharpCompress.Archives.Rar.RarArchive]::IsRarFile($file)){$tempFolder = $sip::Combine($sip::GetDirectoryName($file),$sip::GetFileNameWithoutExtension($file))if(-not (Test-Path $tempFolder)){mkdir $tempFolder | Out-Null}try{$reader = [SharpCompress.Readers.Rar.RarReader]::Open($sif::OpenRead($file))Write-Host ('正在解压...')while($reader.MoveToNextEntry()){if(-not $reader.Entry.IsDirectory){$fn = $sip::GetFileName($reader.Entry.Key)$folder = $sip::GetDirectoryName($reader.Entry.key)$dest = $sip::Combine($tempFolder,$folder)if(-not (Test-Path $dest)){mkdir $dest | Out-Null}$reader.WriteEntryTo($sif::OpenWrite($sip::Combine($dest,$fn)))}}$reader.Dispose()Write-Host ('解压完成!请查看文件夹【'+$tempFolder+'】')}catch{Write-Host ('异常:'+$Error[0].Exception.Message)}#定位文件夹#&explorer.exe /select,$tempFolder
}else{Write-Host ($file+'不是一个合法的rar文件!')
}
以上为powershell版本,使用方法不再赘述。
当然了,为了方便使用,也提供一个CMD版。
@echo off
cd /d %~dp0
powershell.exe -command "$file='%1';$path=(Get-Location).Path;$dll=$($path)+'\SharpCompress.dll';if((-not $file) -or (-not (Test-Path -Path $file))){Write-Host ($file+' 不存在!');exit;};if(-not (Test-Path -Path $dll)){Write-Host ($dll+' 文件不存在!');exit};[void][System.Reflection.Assembly]::LoadFile($dll);$sip=[System.IO.Path];$sif=[System.IO.File];if([SharpCompress.Archives.Rar.RarArchive]::IsRarFile($file)){$tempFolder=$sip::Combine($sip::GetDirectoryName($file),$sip::GetFileNameWithoutExtension($file));if(-not (Test-Path $tempFolder)){mkdir $tempFolder|Out-Null;};try{$reader=[SharpCompress.Readers.Rar.RarReader]::Open($sif::OpenRead($file));Write-Host ('正在解压...');while($reader.MoveToNextEntry()){if(-not $reader.Entry.IsDirectory){$fn=$sip::GetFileName($reader.Entry.Key);$folder=$sip::GetDirectoryName($reader.Entry.key);$dest=$sip::Combine($tempFolder,$folder);if(-not (Test-Path $dest)){mkdir $dest|Out-Null;};$reader.WriteEntryTo($sif::OpenWrite($sip::Combine($dest,$fn)));}};$reader.Dispose();Write-Host ('解压完成!请查看文件夹【'+$tempFolder+'】');}catch{Write-Host ('异常:'+$Error[0].Exception.Message);}}else{Write-Host ($file+'不是一个合法的rar文件!');}"
pause
使用说明:
- 将上述CMD命令另存为
.bat
文件,如:解压rar.bat
- 将
SharpCompress.dll
与上一步的文件解压rar.bat
放在同一个目录下- 将待解压的RAR文件拖放到
解压rar.bat
上松手即可
这个库,不仅支持rar
, 还有7zip
、zip
、tar
、gzip
等都是支持的,可以自由发挥。
03 后记
没有编译环境的,可以下这个试试。
提取码: 8id5
当然了,土豪直通车。
—END—
powershell 解压RAR文件(简易版)相关推荐
- win7怎么解压rar文件_win7解压rar文件的方法
大家知道win7怎么解压rar文件?rar是一种常用的文件压缩与归档的私有格式,用于数据压缩与归档打包.加快传输速度,我们都会将文件进行压缩.但最近有Win7系统用户反映收到rar文件,却不知道w怎么 ...
- unrar - 解压rar文件
我使用过的Linux命令之unrar - 解压rar文件 本文链接:http://codingstandards.iteye.com/blog/792239 (转载请注明出处) 用途说明 现在常 ...
- centos解压分卷rar_CentOS解压rar文件
默认不能解压rar文件. 进官网下载:http://www.rarsoft.com/download.htm 安装: # tar -zxvf rarlinux-x64-5.4.0.tar.gz # c ...
- ubuntu解压rar文件、zip文件乱码
一.rar解压乱码 在ubuntu下解压在windows下打包的xxx.rar,却发现结果惨不忍睹,一坨乱码,弄不好你都删不掉,主要原因是两系统的的编码方式不同,由于windows是gbk的编码格式, ...
- 转:ASP自动解压RAR文件
其实想实现这种功能很简单,首先要上传一个RAR的解压程序,就是RAR自己的解压程序,只需要它的核心程序RAR.EXE这个文件就可以了.然后就要上传一个执行RAR.EXE的程序 CMD.EXE 这个是w ...
- ubuntu16.04 server unrar解压rar文件提示command not found和解压tar.bz2文件
ubuntu16.04 server unrar解压rar文件提示command not found和解压tar.bz2文件 Unrar解压rar文件失败 unrar e a.rar -sh: unr ...
- windows史上最方便解压rar文件的软件WeDo
最近朋友推荐了一款软件WeDo,及其简单的操作,让我一下子就很喜欢去使用它,它是一款只解压Rar文件的软件,只有一个操作,所以极其方便,首先给大家看一下他的操作界面: 从操作界面来看,极其精简: 使用 ...
- UnRAR.dll解压rar文件
unRAR是一个开源的解压rar文件的C++第三方库,源码的github地址:https://github.com/aawc/unrar.git 百度文库的一份基本说明:https://wenku.b ...
- Mac解压rar文件工具
Mac自带的归档压缩工具只能解压缩zip格式的压缩文件 解压rar文件就需要压缩工具了 推荐3款免费压缩工具: ①压缩工具The Unarchiver 官网:https://theunarchiver ...
最新文章
- 分布式文件系统:HDFS
- npm run serve后台运行的命令写法
- 那些功能逆天,却鲜为人知的pandas骚操作
- 阿里云前端周刊 - 第 26 期
- C/C++ realloc()函数解析
- java方法嵌套数据源切换_SpringBoot AOP方式实现多数据源切换的方法
- uci数据集_有关葡萄酒质量的数据分析
- 对话生成 深度强化学习_通过深度学习与死人对话
- 易宝支付(Java实现)
- 计算机论文档案初探,[电子档案管理论文:档案计算机管理技术人才培训工作初探.doc...
- ElasticSearch的REST APIs 之 索引的状态管理
- 联想微型计算机改win7,联想win10改win7如何实现?联想电脑Win10改Win7方法详解
- Mybatis报错 :Error evaluating expression ‘condition.xxxx!= null ‘
- 微信公众号开发系列三:响应关注和取关事件
- 聚名师之力,扬信息之帆,逐教育现代化浪潮——韶关市教育信息化蓝凌名教师工作室挂牌仪式
- bandizip修改压缩文件内容_即将对文件压缩软件Bandizip进行的更改
- linux tar源码,linux之tar命令备份
- python绘制穿山甲字符画视频:这喝汤多是一件美逝
- 前端教程:用 Canvas 编织璀璨星空图
- 北京科技大学 工科物理实验 大二上