powershell 解压RAR文件(简易版)

news/2024/12/22 22:09:51/

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—


http://www.ppmy.cn/news/738003.html

相关文章

java实现解压rar5

JAVA 实现最新的winrar 5 压缩格式的解压。 最近&#xff0c;听到一位朋友说&#xff0c;要实现JAVA 服务端解压rar 文件的需求。当然&#xff0c;想都没想&#xff0c;认为很简单的活&#xff0c;就干了。结果&#xff0c;悲具了。 大家在网上找到的 JAVA 实现rar 解压的&am…

java 解压rar_java 解压rar文件

展开全部 Java 解压rar文件需要用到apache的commons-compress-1.0.jar,这个类的使用如下:32313133353236313431303231363533e78988e69d8331333337613134package cn.myapps.util.pdf; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; imp…

linux下终端解压rar,Linux下解压.rar文件

一、简介 日常我们传到Linux服务器上的文件可能是.zip的文件或者.tar.gz的文件,我们可以用相应的命令对文件进行解压。有的时候会遇到.rar的文件。本次使用rar软件版本是5.6.0。官方网站为http://www.rarlab.com/。 二、下载并安装rar软件 1.创建文件夹 [root@cxm ~]# mkdir /…

Linux debian解压和压缩.rar文件教程

一、简介 我们上传到Linux服务器上的文件日常是.zip或.tat.gz的文件&#xff0c;我们可以用相应的命令对文件进行解压。有时会遇到.rar文件。本次使用rar软件版本是5.6.0。官方网站为http://www.rarlab.com/ 二、下载和安装rar文件 1.创建文件夹 [rootdoudou ~]# mkdir /us…

用tar给linux .rar解压,Linux 下解压 rar 文件的方法

网上下载rar 压缩文件的使用,在linux在我们需要对其进行解压缩,这个时候,我们需要安装 rar相关的文件,来进行解压缩。 1. 下载 我们进入rarlab网站,进行下载rar for linux x64 2. 使用 tar 命令 解压 (*.tar 用 tar –xvf ) Downloads tar -xvf rarlinux-x64-5.6.0.tar.gz…

Linux系统如何解压rar文件

1、下载linux版本的rar软件 访问 官方地址 下载最新版本的linux版本rar软件 2、解压下载好的安装文件 tar -xzpvf rarlinux-x64-610b2.tar.gz 3、编译安装 进入解压后的rar文件夹&#xff0c;执行make命令 cd rar make 4、使用rar命令解压压缩文件 rar x dist.rar 5、 …

Linux rar 压缩 解压文件

前言 在Linux系统&#xff0c;需要对应 xxx.rar文件进行解压&#xff0c;或压缩某个文件&#xff1b;以安装rarlinux版本来实现。 一、安装rar 方案1 直接使用 apt 或 apt-get 安装即可&#xff0c;方便快捷。 On Ubuntu/Debian sudo apt-get install unrar sudo apt-get …

linux解压rar多层文件夹,linux rar 解压文件夹_rar文件夹

原标题:linux rar 解压文件夹_rar文件夹 本经验主要针对linux中的解压缩进行讲解工具/原料linux电脑一台linux文件解压缩1目前 rar a jpg.rar *.jpg //rar格式的压缩,需要先下载rar for linux zip jpg.zip *.jpg //zip格式的压缩 rar格式的文件是在windows操作系统中常见的压缩…