请问我这个调用Winrar的解压程序为什么总是解压不了啊(没分了,我到是希望能多给点)
我用了别人的调用Winrar压缩和解压程序,压缩是没问题的,但是解压就有问题,就是出现诊断信息"没有文件被释放"的错误信息,我把解压贴出来,请大家帮忙看下,谢谢
Private Sub Command2_Click()
Dim Rarexe As String 'WINRAR执行文件的位置
Dim Source As String ' 解压缩前的原始文件
Dim Target As String ' 解压缩后的目标文件
Dim FileString As String 'Shell指令中的字符串
Dim Result As Long
Rarexe = "D:\program files\winrar\winrar"
Source = "E:\数据库1\文件\6.rar"
Target = "E:\数据库1\文件\6.doc"
FileString = Rarexe & " X " & Source & " " & Target
Result = Shell(FileString, 1)
End Sub
当然6.rar是首先通过6.doc压缩成的,现把6.doc删除解压6.rar就不行啊
问题点数:10、回复次数:7Top
1 楼dongge2000(目前叫西西了)回复于 2004-10-04 16:59:37 得分 1
我是用RAR的命令行做的。
Dim x As Long
x = Shell("Rar.exe a MyRar.rar d:\",vbHide)
'Unrar
Dim x As Long
x = Shell("UnRar.exe x -y d:\MyRar.rar c:\", vbHide)Top
2 楼RUKYO(蠢蠢的男子汉 - 恋星夜柔光,舔烈酒豪情)回复于 2004-10-04 19:36:48 得分 3
不好意思,先前没有调试过,这段解压是调试过的:
Private Sub Command1_Click()
Dim Rarexe As String 'WINRAR执行文件的位置
Dim Source As String ' 解压缩前的原始文件
Dim Target As String ' 解压缩后的目标文件
Dim FileString As String 'Shell指令中的字符串
Dim Result As Long
Rarexe = "E:\WinRAR\WinRAR.exe" '"E:\WinRAR\":我WinRAR程序安装路径 "WinRAR.exe":就是WinRAR主程序
Source = App.Path & "\Test.rar" '需要解压的源文件
Target = App.Path & "\Test" '注意这里是填入你要解压的路径
FileString = Rarexe & " X " & Source & " " & Target
Result = Shell(FileString, vbHide)
End Sub
Top
3 楼guxizhw(失落的彩虹)回复于 2004-10-05 11:09:19 得分 3
Public Function gCompress(ByVal pstrSource As String, ByVal pstrTarget As String, Optional IsCps As Boolean = True) As Boolean
'文件压缩以及解压模块
'pstrSource:压缩前的原始文件
'pstrTarget:压缩后的目标文件
'IsCps : 是解压:false 还是压缩: true
Dim Rarexe As String 'WINRAR执行文件的位置
Dim FileString As String 'Shell指令中的字符串
Dim Result As Long
gCompress = True
On Error GoTo Err
If IsCps = True Then '压缩
Rarexe = App.Path & "\WinRAR.EXE"
FileString = Rarexe & " a -o+ -r -ep -m5 """ & pstrTarget & """ """ & pstrSource & """"
Result = Shell(FileString, vbHide)
Else '解压
Rarexe = App.Path & "\WinRAR.EXE"
FileString = Rarexe & " e -o+ """ & pstrSource & """ """ & pstrTarget & """"
Result = Shell(FileString, vbHide)
End If
Exit Function
Err:
MsgBox "文件压缩导出失败!请重新发送", vbOKOnly, "对不起"
Screen.MousePointer = 0
gCompress = False
End Function
这个是我调试过的,不好用留言我Top
4 楼johson1982(土木人)回复于 2004-10-05 19:41:06 得分 0
不好意思了,我运行了还是出那种问题,不知道我是不是我有些地方没弄对吗
Private Sub Command2_Click()
Dim Rarexe As String 'WINRAR执行文件的位置
Dim Source As String ' 解压缩前的原始文件
Dim Target As String ' 解压缩后的目标文件
Dim FileString As String 'Shell指令中的字符串
Dim Result As Long
Rarexe = "D:\program files\WinRAR\WinRAR.exe" 这是我的WinRar安装地方
Source = App.Path & "\Test.rar" '需要解压的源文件
Target = App.Path & "\Test"
FileString = Rarexe & " X " & Source & " " & Target
Result = Shell(FileString, vbHide)
End Sub
我的程序是在E:\下,Test.rar是放在E:\下为E:\Test.rar,是由E:\Test.doc压缩而成,现把Test.doc删除用上面的不行,请问怎么解决呢,
******另外我想问的是你这样必须指定释放的路径,我现在想的是用户不一定想把东西释放到指定的路径,也就是我现在把所有的文件都以压缩后的方式存储,而我想如果我查询到后能够打开winrar这个程序同时里面即是我想解压的文件,至于解不解压和放到那里是他们的事,不知道我讲明白了没,就是我现在不想给出一个固定的释放地址,就想能够查询到后能打开winrar.exe而里面就是即被解压的文件Top
5 楼guxizhw(失落的彩虹)回复于 2004-10-05 21:11:12 得分 0
看rar的中文手册吧
没有email guxizhw◎sina.com
太长,贴了2次没贴上郁闷Top
6 楼vodlinux(好易用)回复于 2004-10-05 21:17:39 得分 3
你这样当然不行啦, 你的程序在E:\, 那么你的 App.path="E:\"
你程序中的 Source=App.Path & "\Test.rar" 就是:
"E:\\Test.rar"
Target = App.Path & "\Test" 就是:
"E:\\Test"
相信WINDOWS是不认你这个路径哦!
你应该这样:
......
if Right(App.Path,1)="\" then
Source = App.path & "Test.rar"
Target = App.Path & "Test"
Else
Source = App.path & "\Test.rar"
Target = App.Path & "\Test"
End if
if Dir(Target,vbDirectry)="" Then '没有目标文件夹, 就建立它
Call MkDir("D:\Test")
end if
'' 需要注意, 我不知道winrar的解压参数是不是"x",你自己搞清楚了,
FileString = Rarexe & " x " & Source & " " & Target
Result = Shell(FileString, vbHide)
......
Top
7 楼johson1982(土木人)回复于 2004-10-05 21:38:56 得分 0
非常感谢你们三位,最后出的问题就是vodlinux(好易用)说的,谢谢,只有十分怎么办,每人3分吧Top




