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, 还有7zipziptargzip等都是支持的,可以自由发挥。

03 后记

没有编译环境的,可以下这个试试。
提取码: 8id5
当然了,土豪直通车。
—END—

powershell 解压RAR文件(简易版)相关推荐

  1. win7怎么解压rar文件_win7解压rar文件的方法

    大家知道win7怎么解压rar文件?rar是一种常用的文件压缩与归档的私有格式,用于数据压缩与归档打包.加快传输速度,我们都会将文件进行压缩.但最近有Win7系统用户反映收到rar文件,却不知道w怎么 ...

  2. unrar - 解压rar文件

    我使用过的Linux命令之unrar - 解压rar文件 本文链接:http://codingstandards.iteye.com/blog/792239    (转载请注明出处) 用途说明 现在常 ...

  3. centos解压分卷rar_CentOS解压rar文件

    默认不能解压rar文件. 进官网下载:http://www.rarsoft.com/download.htm 安装: # tar -zxvf rarlinux-x64-5.4.0.tar.gz # c ...

  4. ubuntu解压rar文件、zip文件乱码

    一.rar解压乱码 在ubuntu下解压在windows下打包的xxx.rar,却发现结果惨不忍睹,一坨乱码,弄不好你都删不掉,主要原因是两系统的的编码方式不同,由于windows是gbk的编码格式, ...

  5. 转:ASP自动解压RAR文件

    其实想实现这种功能很简单,首先要上传一个RAR的解压程序,就是RAR自己的解压程序,只需要它的核心程序RAR.EXE这个文件就可以了.然后就要上传一个执行RAR.EXE的程序 CMD.EXE 这个是w ...

  6. 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 ...

  7. windows史上最方便解压rar文件的软件WeDo

    最近朋友推荐了一款软件WeDo,及其简单的操作,让我一下子就很喜欢去使用它,它是一款只解压Rar文件的软件,只有一个操作,所以极其方便,首先给大家看一下他的操作界面: 从操作界面来看,极其精简: 使用 ...

  8. UnRAR.dll解压rar文件

    unRAR是一个开源的解压rar文件的C++第三方库,源码的github地址:https://github.com/aawc/unrar.git 百度文库的一份基本说明:https://wenku.b ...

  9. Mac解压rar文件工具

    Mac自带的归档压缩工具只能解压缩zip格式的压缩文件 解压rar文件就需要压缩工具了 推荐3款免费压缩工具: ①压缩工具The Unarchiver 官网:https://theunarchiver ...

最新文章

  1. 分布式文件系统:HDFS
  2. npm run serve后台运行的命令写法
  3. 那些功能逆天,却鲜为人知的pandas骚操作
  4. 阿里云前端周刊 - 第 26 期
  5. C/C++ realloc()函数解析
  6. java方法嵌套数据源切换_SpringBoot AOP方式实现多数据源切换的方法
  7. uci数据集_有关葡萄酒质量的数据分析
  8. 对话生成 深度强化学习_通过深度学习与死人对话
  9. 易宝支付(Java实现)
  10. 计算机论文档案初探,[电子档案管理论文:档案计算机管理技术人才培训工作初探.doc...
  11. ElasticSearch的REST APIs 之 索引的状态管理
  12. 联想微型计算机改win7,联想win10改win7如何实现?联想电脑Win10改Win7方法详解
  13. Mybatis报错 :Error evaluating expression ‘condition.xxxx!= null ‘
  14. 微信公众号开发系列三:响应关注和取关事件
  15. 聚名师之力,扬信息之帆,逐教育现代化浪潮——韶关市教育信息化蓝凌名教师工作室挂牌仪式
  16. bandizip修改压缩文件内容_即将对文件压缩软件Bandizip进行的更改
  17. linux tar源码,linux之tar命令备份
  18. python绘制穿山甲字符画视频:这喝汤多是一件美逝
  19. 前端教程:用 Canvas 编织璀璨星空图
  20. 北京科技大学 工科物理实验 大二上

热门文章

  1. 20几岁,该策马奔腾
  2. 12个职场幽默小故事
  3. 零基础学韩语-看韩剧追欧巴
  4. 关于Unsupported major.minor version 52.0 错误的解决方案
  5. java三角套利_谈谈三角套利的策略
  6. BGP的消息类型以及格式
  7. 【图像分类】2021-EfficientNetV2 CVPR
  8. PyTorch中gather()函数的用法
  9. java中的线程等待
  10. 【LeetCode-中等】46. 全排列(图文详解)