如何在 VB 中使用 Winzip 来压缩文件? 版本:VB6 / VB5 / VB4-32 现在压缩软件一大堆,但是如果您想在 VB 程式中做文件压缩的功能,您知道要怎么做吗?我不懂一些烦琐的压缩理论,但是我懂得利用现有的压缩软件来替我达到我想要的功能!在这个例子中,我要使用 Winzip 来做,所以,如果您想用下面的示例来做练习的话,先決条件就是您的电脑中一定要有安装 Winzip 才行!压缩文件 (加入文件):语法: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" ' winzip 执行文件的位置
wtarget = "d:\1.zip" ' 原始文件 (压缩前)
wsource = "d:\1.mbd" ' 目地文件 (压缩后)
wcmd = wzipexe & " -a " & wtarget & " " & wsource ' Shell 指令
retval = Shell(wcmd, 6) ' Shell 指令传回值
'上面的一大串可写成
'retval = Shell("C:\program files\winzip\WINzip32 -a _
'd:\1.zip d:\1.mdb", 6)
End Sub
以上是我在CSDN上找到的一些相关介绍,但是在window运用shell有时会出错,比如当文件处于打开状态,或者文件夹下为空的时候都会报错,我曾经试着查看retval的返回值来寻找它的规律,但是好象没有什么规律啊,请各位大侠帮帮忙一起来看看吧。谢谢拉。
指定 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" ' winzip 执行文件的位置
wtarget = "d:\1.zip" ' 原始文件 (压缩前)
wsource = "d:\1.mbd" ' 目地文件 (压缩后)
wcmd = wzipexe & " -a " & wtarget & " " & wsource ' Shell 指令
retval = Shell(wcmd, 6) ' Shell 指令传回值
'上面的一大串可写成
'retval = Shell("C:\program files\winzip\WINzip32 -a _
'd:\1.zip d:\1.mdb", 6)
End Sub
以上是我在CSDN上找到的一些相关介绍,但是在window运用shell有时会出错,比如当文件处于打开状态,或者文件夹下为空的时候都会报错,我曾经试着查看retval的返回值来寻找它的规律,但是好象没有什么规律啊,请各位大侠帮帮忙一起来看看吧。谢谢拉。
RAR 3.00 beta 4 版权 (c) 1993-2002 为 Eugene Roshal 所有 4 Mar 2002
共享软件版本 键入 RAR -? 可获得帮助用法: rar <命令> -<开关 1> -<开关 N> <压缩档案文件> <文件...>
<@列表文件...> <释放路径\><命令>
a 添加文件到压缩档案中
c 添加压缩档案注释
cf 添加文件注释
cw 写入压缩档案注释到文件中
d 从压缩档案中删除文件
e 释放文件到当前目录
f 更新压缩档案内的文件
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[地址] 通过电子邮件发送档案文件
ierr 发送全部信息至标准错误显示装置
ilog[文件名] 记录错误信息到文件(只在注册版中可用)
inul 禁止所有信息
isnd 允许声音提示
k 锁定压缩档案
kb 继续释放损坏的文件
m<0..5> 设置压缩等级 (0-存储...3-默认...5-最大)
mc<参数> 设置高级压缩参数
md<大小> 以 KB 为单位的字典大小 (64,128,256,512,1024,2048,4096 或 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<文件> 从文件读取压缩档案注释
Private Declare Function WinExec Lib "Kernel"(ByVal lpCmdLine As String, ByVal nCmdShow As Integer) As Integer
dim i as integer
i=winexec("notepad.exe","c:\wst.txt",9)'参数9 即SW_RESTORE,也就是激活并显示窗口你调试一下看看
当文件处于打开状态,或者文件夹下为空时候返回的错误码是多少,然后用if判断提示
Dim i As Integer
i = WinExec("notepad.exe c:\wst.txt", 9) '参数9 即SW_RESTORE,也就是激活并显示窗口
Debug.Print i
End Sub
第一个写错了!参数位置不对 :$