如何使用shell调用Winrar压缩及解压缩文件 我想在程序中使用shell调用WinRar压缩及解压缩文件,请问如何解决?小弟有急用!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在安装 WinRAR 后你会发现,在相同目录中有个文件 rar.exe。它也是 32 位 RAR 的 Windows 版本,但它只支持命令行,纯文本模式的界面。当从 DOS 提示符模式下的 BAT 和 CMD 文件来调用控制 RAR 等时,它特别有用。它支持了与比 WinRAR 多很多得命令行参数开关和命令,虽然它有着常规命令行 WinRAR 命令行界面 相似的语法,但却是个真正的 RAR 控制台程序。此帮助文件不包含那一些仅在控制台版本中所支持的开关参数和命令的描述。你可以读取 rar.txt 文件来获取所有控制台 RAR 功能的详细帮助。 压缩档案 (加入档案):语法:winzip[32].exe [-min] action [options] filename[.zip] files参数说明:-min 最小化指定 Winzip 执行时为最小化。如果您要使用 -min 这个参数,它必须是命令列参数的第一个参数。action 动作-a add 加入档案 -f freshen 重新整理目前档案 -u update 更新档案 -m move 移动档案 options 选项Directories 数据夹选项 -r Recurse Directories 含数据夹内内容。 -p Save Extra Directory Info 储存其它层数据夹讯息。 method 决定压缩的方法选项 -ex eXtra 最大 (最慢) -en Normal 一般 (默认值) -ef Fast 快速 -es Super fast 最快速 -e0 no compression 不压缩 其它选项 -s 设定密码 密码必须使用双引号括起来。例如:-s "Secret Password",不过要注意大小写是不同的! -hs 包含符合条件的隐藏及系统文件。 filename.zip 压缩档名指定压缩后的档名,要注意的是必须是全路径文件名 (含磁盘驱动器代号及数据夹)。files 所有源文件一个或多个档案,每一个档案写在独立的一行,可以使用万用字符,例如:*.bak。解压缩档案:语法:winzip[32].exe -e [options] filename[.zip] directory参数说明:-e 表示解压缩是必要的参数!options 选项-o Overwrite existing files without prompting 取代同名的档案。 -j Junk pathnames 跳过旧档案。除非指定 -J 这个参数,否则会使用原本的数据夹名称。 -s 设定密码 密码必须使用双引号括起来。例如:-s "Secret Password",不过要注意大小写是不同的! -hs 包含符合条件的隐藏及系统文件。 filename.zip 压缩档名指定压缩后的档名,要注意的是必须是全路径文件名 (含磁盘驱动器代号及数据夹)。directory 资料夹解压缩后的档案存放的数据夹。如果数据夹不存在便会自动建立。注意事项:※非常重要:永远使用全路径文件名 (含磁盘驱动器代号及数据夹)。※若希望执行 Winzip 时是最小化,要使用 -min 这个参数,它必须是命令列参数的第一个参数。※Winzip 内建只支持 zip 及 unzip 二种操作模式。※若是长档名的话,必须使用双引号括起来。※在设定档案时,前导及最后的字符不可空白,也不可有空白行!※在命令列中的动作及选项参数,至少要用一个以上的空白分隔。※WinZip 可以用来配合 cc:Mail 压缩档案:更改 WMAIL.INI 中的 [cc:Mail] section 的 compress= 这一行指定 Winzip 的完整路径,并跟随着 "-a %1 @%2" 参数例如:如果 Winzip 安装在 c:\winzip,则 compress= 这一行必须改成 compress=c:\winzip\winzip.exe -a %1 @%2范例程序:Private Sub Command1_Click() Dim wzipexe As String ' winzip 执行文件的位置 Dim wsource As String ' 源文件 (压缩前) Dim wtarget As String ' 目地档案 (压缩后) Dim wcmd As String ' Shell 指令 Dim retval As Double ' Shell 指令传回值 '拼凑 Shell 指令 wzipexe = "C:\program files\winzip\WINzip32" wtarget = "c:\TargetFolder\AssignedNameFile.zip" wsource = "c:\SourceFolder\SourceFile(s)" wcmd = wzipexe & " -a " & wtarget & " " & wsource retval = Shell(wcmd, 6) '上面的一大串可写成 'retval = Shell("C:\program files\winzip\WINzip32 -a _ 'c:\TargetFolder\AssignedNameFile.zip c:\SourceFolder\SourceFile(s)", 6)End Sub 我自己开发了个小程序,就是调用winrar的,很完整。 RAR 3.10 版权 (C) 1993-2002 Eugene Roshal 18 十二月 2002已注册给 - User -用法: 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<文件> 从文件读取压缩文件注释 VB ADODC修改数据 关于图片读取问题 Visual Basic 高手进 一个treeview的问题? 怎样在程序中打开一个文件,用IE打开(.xml格式的文件) 问Access2000中一个.mdb能大概存多少个表?一个表大概存多少记录的极限?? 请教! VB调用webservice问题 关于中文字符问题?十万火急!!!!!!!!!!! 我想显示某数值随着时间变化的坐标曲线,请问用什么控件? 请问:用Inet控件实现FTP下载时如何得到服务器上某一文件的大小? 关于webbrowser的一个问题
版本,但它只支持命令行,纯文本模式的界面。当从 DOS 提示符模式下的 BAT 和 CMD 文件来调用控制 RAR 等时,它特别有用。它支持了与比 WinRAR 多很多得命令行参数开关和命令,虽然它有着常规命令行 WinRAR 命令行界面 相似的语法,但却是个真正的 RAR 控制台程序。此帮助文件不包含那一些仅在控制台版本中所支持的开关参数和命令的描述。你可以读取 rar.txt 文件来获取所有控制台 RAR 功能的详细帮助。
参数说明:-min 最小化
指定 Winzip 执行时为最小化。如果您要使用 -min 这个参数,它必须是命令列参数的第一个参数。action 动作-a add 加入档案
-f freshen 重新整理目前档案
-u update 更新档案
-m move 移动档案 options 选项Directories 数据夹选项
-r Recurse Directories 含数据夹内内容。
-p Save Extra Directory Info 储存其它层数据夹讯息。
method 决定压缩的方法选项
-ex eXtra 最大 (最慢)
-en Normal 一般 (默认值)
-ef Fast 快速
-es Super fast 最快速
-e0 no compression 不压缩
其它选项
-s 设定密码 密码必须使用双引号括起来。
例如:-s "Secret Password",不过要注意大小写是不同的!
-hs 包含符合条件的隐藏及系统文件。 filename.zip 压缩档名
指定压缩后的档名,要注意的是必须是全路径文件名 (含磁盘驱动器代号及数据夹)。files 所有源文件
一个或多个档案,每一个档案写在独立的一行,可以使用万用字符,例如:*.bak。解压缩档案:语法:winzip[32].exe -e [options] filename[.zip] directory
参数说明:-e 表示解压缩
是必要的参数!options 选项-o Overwrite existing files
without prompting 取代同名的档案。
-j Junk pathnames 跳过旧档案。
除非指定 -J 这个参数,否则会使用原本的数据夹名称。
-s 设定密码 密码必须使用双引号括起来。
例如:-s "Secret Password",不过要注意大小写是不同的!
-hs 包含符合条件的隐藏及系统文件。 filename.zip 压缩档名
指定压缩后的档名,要注意的是必须是全路径文件名 (含磁盘驱动器代号及数据夹)。directory 资料夹
解压缩后的档案存放的数据夹。如果数据夹不存在便会自动建立。
注意事项:※非常重要:永远使用全路径文件名 (含磁盘驱动器代号及数据夹)。
※若希望执行 Winzip 时是最小化,要使用 -min 这个参数,它必须是命令列参数的第一个参数。
※Winzip 内建只支持 zip 及 unzip 二种操作模式。
※若是长档名的话,必须使用双引号括起来。
※在设定档案时,前导及最后的字符不可空白,也不可有空白行!
※在命令列中的动作及选项参数,至少要用一个以上的空白分隔。※WinZip 可以用来配合 cc:Mail 压缩档案:
更改 WMAIL.INI 中的 [cc:Mail] section 的 compress= 这一行
指定 Winzip 的完整路径,并跟随着 "-a %1 @%2" 参数
例如:如果 Winzip 安装在 c:\winzip,则 compress= 这一行必须
改成 compress=c:\winzip\winzip.exe -a %1 @%2
范例程序:
Private Sub Command1_Click()
Dim wzipexe As String ' winzip 执行文件的位置
Dim wsource As String ' 源文件 (压缩前)
Dim wtarget As String ' 目地档案 (压缩后)
Dim wcmd As String ' Shell 指令
Dim retval As Double ' Shell 指令传回值 '拼凑 Shell 指令
wzipexe = "C:\program files\winzip\WINzip32"
wtarget = "c:\TargetFolder\AssignedNameFile.zip"
wsource = "c:\SourceFolder\SourceFile(s)"
wcmd = wzipexe & " -a " & wtarget & " " & wsource
retval = Shell(wcmd, 6)
'上面的一大串可写成
'retval = Shell("C:\program files\winzip\WINzip32 -a _
'c:\TargetFolder\AssignedNameFile.zip c:\SourceFolder\SourceFile(s)", 6)
End Sub
RAR 3.10 版权 (C) 1993-2002 Eugene Roshal 18 十二月 2002
已注册给 - User -用法: 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<文件> 从文件读取压缩文件注释