winrar 解压,急!!!

wenrushui 2005-11-18 02:43:49
用winrar.exe解压,怎样在不同目录间进行,需要什么参数,先谢谢了。
如把C:\test\test.rar解压到d:\test\test1
...全文
158 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zou19820704 2005-11-18
  • 打赏
  • 举报
回复
方法2:

Const ERAR_END_ARCHIVE = 10
Const ERAR_NO_MEMORY = 11
Const ERAR_BAD_DATA = 12
Const ERAR_BAD_ARCHIVE = 13
Const ERAR_UNKNOWN_FORMAT = 14
Const ERAR_EOPEN = 15
Const ERAR_ECREATE = 16
Const ERAR_ECLOSE = 17
Const ERAR_EREAD = 18
Const ERAR_EWRITE = 19
Const ERAR_SMALL_BUF = 20

Const RAR_OM_LIST = 0
Const RAR_OM_EXTRACT = 1

Const RAR_SKIP = 0
Const RAR_TEST = 1
Const RAR_EXTRACT = 2

Const RAR_VOL_ASK = 0
Const RAR_VOL_NOTIFY = 1

Enum RarOperations
OP_EXTRACT = 0
OP_TEST = 1
OP_LIST = 2
End Enum

Private Type RARHeaderData
ArcName As String * 260
FileName As String * 260
Flags As Long
PackSize As Long
UnpSize As Long
HostOS As Long
FileCRC As Long
FileTime As Long
UnpVer As Long
Method As Long
FileAttr As Long
CmtBuf As String
CmtBufSize As Long
CmtSize As Long
CmtState As Long
End Type

Private Type RAROpenArchiveData
ArcName As String
OpenMode As Long
OpenResult As Long
CmtBuf As String
CmtBufSize As Long
CmtSize As Long
CmtState As Long
End Type

Private Declare Function RAROpenArchive Lib "unrar.dll" (ByRef ArchiveData As RAROpenArchiveData) As Long
Private Declare Function RARCloseArchive Lib "unrar.dll" (ByVal hArcData As Long) As Long
Private Declare Function RARReadHeader Lib "unrar.dll" (ByVal hArcData As Long, ByRef HeaderData As RARHeaderData) As Long
Private Declare Function RARProcessFile Lib "unrar.dll" (ByVal hArcData As Long, ByVal Operation As Long, ByVal DestPath As String, ByVal DestName As String) As Long
Private Declare Sub RARSetChangeVolProc Lib "unrar.dll" (ByVal hArcData As Long, ByVal Mode As Long)
Private Declare Sub RARSetPassword Lib "unrar.dll" (ByVal hArcData As Long, ByVal Password As String)

Private Sub Command5_Click()
End
End Sub

Private Sub RARExecute(Mode As RarOperations, RarFile As String, Optional Password As String)
' Description:-
' Extract file(s) from RAR archive.
' Parameters:-
' Mode = Operation to perform on RAR Archive
' RARFile = RAR Archive filename
' sPassword = Password (Optional)
Dim lHandle As Long
Dim iStatus As Integer
Dim uRAR As RAROpenArchiveData
Dim uHeader As RARHeaderData
Dim sStat As String, Ret As Long

uRAR.ArcName = RarFile
uRAR.CmtBuf = Space(16384)
uRAR.CmtBufSize = 16384

If Mode = OP_LIST Then
uRAR.OpenMode = RAR_OM_LIST
Else
uRAR.OpenMode = RAR_OM_EXTRACT
End If

lHandle = RAROpenArchive(uRAR)
If uRAR.OpenResult <> 0 Then OpenError uRAR.OpenResult, RarFile

If Password <> "" Then RARSetPassword lHandle, Password

If (uRAR.CmtState = 1) Then MsgBox uRAR.CmtBuf, vbApplicationModal + vbInformation, "Comment"

iStatus = RARReadHeader(lHandle, uHeader)
Show
Do Until iStatus <> 0
sStat = Left(uHeader.FileName, InStr(1, uHeader.FileName, vbNullChar) - 1)
Select Case Mode
Case RarOperations.OP_EXTRACT
List1.AddItem "Extracting " & sStat
Ret = RARProcessFile(lHandle, RAR_EXTRACT, "", uHeader.FileName)
Case RarOperations.OP_TEST
List1.AddItem "Testing " & sStat
Ret = RARProcessFile(lHandle, RAR_TEST, "", uHeader.FileName)
Case RarOperations.OP_LIST
List1.AddItem "File: " & sStat & vbTab & vbTab & vbTab & "Size: " & uHeader.UnpSize
Ret = RARProcessFile(lHandle, RAR_SKIP, "", "")
End Select

If Ret = 0 Then
List1.List(List1.ListCount - 1) = List1.List(List1.ListCount - 1) & vbTab & vbTab & "OK"
Else
ProcessError Ret
End If

iStatus = RARReadHeader(lHandle, uHeader)
Refresh
Loop

If iStatus = ERAR_BAD_DATA Then Erro ("File header broken")

RARCloseArchive lHandle
End Sub

Private Sub Form_Load()
Dim Vals() As String, Msg As String
Dim Command As String
Command = "x " & "D:\外语学习\lhut3227\文档\UnRarOCX.rar" & " 0" '在这里用Commondilog 来确定你的文件路径。“X”,“0” 应该保留哦
If Command = "" Then
Msg = "VBUNRAR.EXE. This is a simple example of UNRAR.DLL usage" & vbCrLf & vbCrLf
Msg = Msg & "Syntax:" & vbCrLf
Msg = Msg & "VBUNRAR X <Archive> <Password> extract archive contents" & vbCrLf
Msg = Msg & "VBUNRAR T <Archive> <Password> test archive contents" & vbCrLf
Msg = Msg & "VBUNRAR L <Archive> <Password> view archive contents"
MsgBox Msg, vbApplicationModal + vbInformation, "VBUnRAR"
End
End If
Vals = Split(Command, " ")

ReDim Preserve Vals(2)
If Vals(0) = "" Or Vals(1) = "" Then Erro ("Missing arguments!")
Select Case UCase(Vals(0))
Case "X"
RARExecute OP_EXTRACT, Vals(1), Vals(2)
Case "T"
RARExecute OP_TEST, Vals(1), Vals(2)
Case "L"
RARExecute OP_LIST, Vals(1), Vals(2)
Case Else
Erro "Invalid Arguments!"
End Select
Command5.Enabled = True
End Sub

Private Sub OpenError(ErroNum As Long, ArcName As String)
Select Case ErroNum
Case ERAR_NO_MEMORY
Erro "Not enough memory"
Case ERAR_EOPEN:
Erro "Cannot open " & ArcName
Case ERAR_BAD_ARCHIVE:
Erro ArcName & " is not RAR archive"
Case ERAR_BAD_DATA:
Erro ArcName & ": archive header broken"
End Select
End Sub

Private Sub ProcessError(ErroNum As Long)
Select Case ErroNum
Case ERAR_UNKNOWN_FORMAT
Erro "Unknown archive format"
Case ERAR_BAD_ARCHIVE:
Erro "Bad volume"
Case ERAR_ECREATE:
Erro "File create error"
Case ERAR_EOPEN:
Erro "Volume open error"
Case ERAR_ECLOSE:
Erro "File close error"
Case ERAR_EREAD:
Erro "Read error"
Case ERAR_EWRITE:
Erro "Write error"
Case ERAR_BAD_DATA:
Erro "CRC error"
End Select
End Sub

Private Sub Erro(Msg As String)
MsgBox Msg, vbApplicationModal + vbExclamation, "Error"
End
End Sub

rainstormmaster 2005-11-18
  • 打赏
  • 举报
回复
http://64.233.167.104/search?q=cache:ajRsOuJq1skJ:www.waterbeast.net/documents/tech23.html+rar+%E5%8F%82%E6%95%B0+%E5%91%BD%E4%BB%A4%E8%A1%8C&hl=zh-CN
zou19820704 2005-11-18
  • 打赏
  • 举报
回复

方法1 :你自己做格式摸索摸索

在安装 WinRAR 后你会发现,在相同目录中有个文件 rar.exe。它也是 32 位 RAR 的 Windows
版本,但它只支持命令行,纯文本模式的界面。当从 DOS 提示符模式下的 BAT 和 CMD 文件来调用控制 RAR 等时,它特别有用。它支持了与比 WinRAR 多很多得命令行参数开关和命令,虽然它有着常规命令行 WinRAR 命令行界面 相似的语法,但却是个真正的 RAR 控制台程序。此帮助文件不包含那一些仅在控制台版本中所支持的开关参数和命令的描述。你可以读取 rar.txt 文件来获取所有控制台 RAR 功能的详细帮助。


用法: rar <命令> -<开关 1> -<开关 N> <压缩文件> <文件...>
<@列表文件...> <解压路径\>

<命令>
a 添加文件到压缩文件
c 添加压缩文件注释
cf 添加文件注释
cw 写入压缩文件注释到文件
d 删除压缩文件中的文件
e 解压压缩文件到当前目录
f 刷新压缩文件中的文件
i[参数]=<串> 在压缩文件中查找字符串
k 锁定压缩文件
l[t] 列出压缩文件[技术信息]
m[f] 移动到压缩文件[仅对文件]
p 打印文件到标准输出设备
r 修复压缩文件
rc 重建丢失的卷
rr[N] 添加数据恢复记录
rv[N] 创建恢复卷
s[名字|-] 转换压缩文件为自解压格式或转换回压缩文件
t 测试压缩文件
u 更新压缩文件中的文件
v[t] 详细列出压缩文件[技术信息]
x 用绝对路径解压文件

<开关>
- 停止扫描
ac 压缩或解压后清除文件属性
ad 添加压缩文件名到目标路径
ag[格式] 使用当前日期生成压缩文件名
ao 添加具有压缩属性的文件
ap<格式> 添加路径到压缩文件中
as 同步压缩文件内容
av 添加用户身份校验(仅注册版本可用)
av- 禁用用户身份校验
c- 禁用注释显示
cfg- 禁用读取配置
cl 名称转换为小写
cu 名称转换为大写
df 压缩后删除文件
dh 打开共享文件
ds 对固实压缩文件禁用名称排序
e<属性> 设置文件排除属性
ed 不添加空目录
en 不添加"压缩文件结束"标志
ep 从名称中排除路径
ep1 从名称中排除基本目录
ep2 展开为完整路径
f 刷新文件
hp[密码] 同时加密文件数据和文件头
idp 禁用百分比显示
ieml[属性] 用 E-mail 发送压缩文件
ierr 发送所有消息到标准错误设备
ilog[名称] 把错误写到日志文件(只有注册版本可用)
inul 禁用所有消息
ioff 完成一个操作后关闭 PC 电源
isnd 启用声音
k 锁定压缩文件
kb 保留损坏的已解压文件
m<0..5> 设置压缩级别(0-存储...3-默认...5-最大)
mc<参数> 设置高级压缩参数
md<大小> 以KB为单位的字典大小(64,128,256,512,1024,2048,4096 or A-G)
ms[ext;ext] 指定存储的文件类型
o+ 覆盖已存在文件
o- 不覆盖已存在文件
os 保存 NTFS 流
ow 保存或恢复文件所有者和组
p[密码] 设置密码
p- 不询问密码
r 递归子目录
r0 仅递归通配符名称的子目录
ri<P>[:<S>] 设置优先级(0-默认,1-最小..15-最大)和以毫秒为单位的休眠时间
rr[N] 添加数据恢复记录
rv[N] 创建恢复卷
s[<N>,v[-],e] 创建固实压缩文件
s- 禁用固实压缩文件
sfx[名称] 创建自解压压缩文件
t 压缩后测试文件
ta<日期> 添加日期 <日期> 后修改的文件,日期格式 YYYYMMDDHHMMSS
tb<日期> 添加日期 <日期> 前修改的文件,日期格式 YYYYMMDDHHMMSS
tk 保留原始压缩文件时间
tl 设置压缩文件时间为最新文件时间
tn<时间> 添加 <时间> 以后的文件
to<时间> 添加 <时间> 以前的文件
u 更新文件
v 自动检测创建卷的大小或者列出所有的卷
v<大小>[k,b] 创建卷大小=<大小>*1000 [*1024, *1]
vd 创建容量前清除磁盘内容
ver[n] 文件版本控制
vn 使用旧风格的卷命名方案
vp 每卷之前暂停
w<路径> 指定工作目录
x<文件> 排除指定的文件
x@ 从标准输入设备读取要排除的文件名
x@<列表> 排除指定列表文件中的文件
y 假设对全部询问都回答是
z<文件> 从文件读取压缩文件注释
fxy_2002 2005-11-18
  • 打赏
  • 举报
回复
WinRAR <command> -<switch1> -<switchN> <archive> <files...> <@listfiles...> <path_to_extract\>

command Character combination denoted function to be performed by WinRAR

switch Switches used to define a specific type of operation, compression strength, type of archive, etc.


更多内容打开 winrar help 文件看看。其中的命令行模式
wenrushui 2005-11-18
  • 打赏
  • 举报
回复
英文的看不懂呀。
rainstormmaster 2005-11-18
  • 打赏
  • 举报
回复
看winrar的帮助

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧