用winrar.exe解压,怎样在不同目录间进行,需要什么参数,先谢谢了。
如把C:\test\test.rar解压到d:\test\test1

解决方案 »

  1.   

    WinRAR  <command> -<switch1> -<switchN> <archive> <files...> <@listfiles...> <path_to_extract\>command Character combination denoted function to be performed by WinRARswitch Switches used to define a specific type of operation, compression strength, type of archive, etc.
    更多内容打开 winrar help 文件看看。其中的命令行模式
      

  2.   


    方法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<文件>       从文件读取压缩文件注释
      

  3.   

    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
      

  4.   

    方法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 = 1Enum 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 SubPrivate 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 SubPrivate 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 SubPrivate 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 SubPrivate 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 SubPrivate Sub Erro(Msg As String)
        MsgBox Msg, vbApplicationModal + vbExclamation, "Error"
        End
    End Sub