如何用vba压缩解压缩带或不带密码的文件?

要用vba压缩解压缩带或不带密码的文件,需要借助解压缩软件。

目前市面上有很多种解压缩软件,winrar是其中一种。

由于winrar支持命令行模式运行解压缩,所以可以用vba调用winrar的命令行模式来实现文件的批量解压缩。

一、winrar命令行模式介绍

winrar命令行语法描述如下:

命令 指定 WinRAR 运行的命令的字符组合。
参数 切换操作指定类型,压缩强度,压缩文件类型,等等的定义。
压缩文件 要处理的压缩文件名。
文件 要处理的文件名。
列表文件 列表文件是包含要处理文件名称的纯文本。文件名应该在第一卷启动。可以在列表文件中使用 //字符后添加注释。例如,您可以包含两列字符串创建 backup.lst:c:\work\doc\*.txt //备份文本文档 c:\work\image\*.bmp //备份图片

c:\work\misc

并接着运行:

winrar a backup @backup.lst

您可以在命令行中同时指定普通的文件名和列表文件名。

解压路径 只与命令 e和x,搭配使用。指出解压文件添加的位置。如果文件夹不存在时,会自动创建。

以下是所有的winrar命令列表:

字母命令列表  说明
a 添加文件到压缩文件
c 添加压缩文件注释
ch 改变压缩文件参数
cv 转换压缩文件
cw 写入一个压缩文件注释到文件
d 从压缩文件删除文件
e 从压缩文件解压压缩,忽略路径
f 刷新压缩文件中的文件
i 在压缩文件中查找字符串
k 锁定压缩文件
m 移动文件和文件夹到压缩文件
r 修复受损的压缩文件
rc 重建丢失的卷
rn 重命名压缩文件
rr[N] 添加数据恢复记录
rv[N] 创建恢复卷
s[name] 转换压缩文件成为自解压文件类型
s- 删除自解压模块
t 测试压缩文件
u 从压缩文件中更新文件
x 以完整路径名称从压缩文件解压压缩

以下是所有的winrar命令参数列表:

字母参数列表 说明
停止参数扫描
-@[+] 禁用 [启用] 文件列表
-ac 在压缩或解压后清除存档属性
-ad 附加压缩文件名到目标路径中
-af<类型> 指定压缩文件格式
-ag[格式] 以当前日期生成压缩文件名
-ai 忽略文件属性
-ao 添加有存档属性设置的
-ap<路径> 设置内部压缩文件路径
-as 同步化压缩文件内容
-cfg- 忽略默认配置和环境变量
-cl 将文件名转换成为小写
-cp<名称> 选择一个压缩配置文件
-cu 将文件名转换成为大写
-df 压缩后删除压缩文件
-dh 打开共享的文件
-dr 删除文件到回收站
-ds 不排序压缩的文件
-dw 压缩后清除文件
-ed 不添加空文件夹
-en 不添加“压缩文件结束”块
-ep 从名称中排除路径
0 从名称中排除主文件夹
#REF! 扩大成完整路径
#REF! 扩展包含盘符的完整路径
-e[+]<属性> 设置文件排除和包含属性
-f 刷新文件
-hp[密码] 加密文件数据和头
-ht[b|c] 选择文件校验和的哈希类型 [BLAKE2,CRC32]
-iadm 对于自解压压缩文件请求管理员访问权限
-ibck 在后台运行 WinRAR
-ieml[.][地址] 使用E-mail发送压缩文件
-iicon<名称> 指定自解压图标
-iimg<名称> 指定自解压图片
-ilog[名称] 记录错误到文件中
-im 显示更多信息
-inul 关闭错误信息
-ioff[n] 关闭 PC 电源
-isnd[-] 控制通知的声音
-k 锁定压缩文件
-kb 保留坏掉的解压文件
-log[格式][=文件名] 写入名称到日志文件
-m<n> 设置压缩方式
-ma[4|5] 指定压缩格式的版本
-mc<参数> 设置高级压缩参数
-md<n> 选择字典大小
-me[par] 设置加密参数
-ms[列表] 指定文件存储
-mt<参数 > 设置线程数
-n<文件> 附加过滤器包含文件
-n@<列表文件> 从列表文件中读取附加过滤器掩码
-os 保存 NTFS 数据流
-oc 设置 NTFS “压缩”属性
-oh 把硬链接保存为链接而不是文件
-oi[-] 把完全相同的文件保存为引用
-ol 把符号链接保存为链接而不是文件
-or 自动重命名
-ow 处理文件用户身份校验信息
-o+ 覆盖已存在的文件
-o- 不要覆盖已存在的文件
-p[密码] 设置密码
-qo[-|+] 添加快速打开信息 [无|强制]
-r 返回子文件夹
-r- 禁用递归
-r0 只返回与通配符匹配的子文件夹
-ri 设置优先级和休眠时间
-rr[N] 添加数据恢复记录
-rv[N] 创建恢复卷
-s 创建固实压缩文件
-s<N> 以文件数量创建固实组
-sc<字符集>[对象] 指定字符集
-se 以文件扩展名创建固实组
-sfx[名称] 创建自解压文件
-sl<大小> 处理大小小于指定大小的文件
-sm< 大小> 处理大小超过指定大小的文件
-sv 创建互不依赖的固实压缩文件
-sv- 创建互相依赖的固实压缩文件
-s- 禁用固实算法
-t 压缩后测试文件
-ta[m,c,a,o]< 日期> 只处理指定日期之后修改的文件
-tb[m,c,a,o]< 日期> 只处理指定日期之前修改的文件
-tk 保持原有压缩文件时间
-tl 以最新的文件设置压缩文件时间
-tn[m,c,a,o]< 时间> 处理较新于指定时间的文件
-to[m,c,a,o]< 时间> 处理较旧于指定时间的文件
-ts[m,c,a][+,-,1] 保存或恢复文件时间(修改,创建,访问)
-u 更新文件
-v<n>[k|b|f|m|M|g|G] 创建分卷压缩
-vd 创建分卷压缩前清除磁盘内容
-ver[n] 文件版本控制
-vn 使用旧风格的卷命名法则
-vp 每次分卷压缩前暂停
-w<路径> 设置临时文件的文件夹
-x< 文件> 排除指定的文件
-x@< 文件列表> 排除指定的列表文件中列出的文件
-y 假设全部的询问回应皆为“是”
-z< 文件> 从文件读取压缩文件注释

二、用winrar命令行模式压缩文件

winrar命令行模式压缩文件的命令如下:

比如D盘的文件夹下的文件如下图所示:

不带参数压缩该文件夹下的所有文件时,打开压缩文件会显示如下图所示:

也就是直接用

命令压缩文件时,打开压缩文件会显示路径,不会直接显示被压缩的文件。

如果要打开压缩文件时直接显示被压缩的文件,需要添加参数“-ep”,用以排除路径。

如果需要压缩过程在后台执行,不要显示压缩过程,还需要添加参数“-IBCK”,表示在后台执行压缩过程。

以下是用winrar命令行模式压缩文件的vba代码:

三、用winrar命令行模式解压缩文件

winrar命令行模式解压缩文件的命令如下:

其中命令可以用”e”或“x”,其中命令e表示忽略路径解压压缩的文件到当前或指定的文件夹。。

而用命令x解压缩文件时,以完整路径解压文件和文件夹。保存在压缩文件中的文件夹架构,将会完整的还原恢复。

以下是用winrar命令行模式解压缩文件的vba代码:

E -IBCK -y 命令参数表示在后台执行解压缩,并且对于一切弹窗都默认回应是,也就是避免所有弹窗提示。

四、用winrar命令行模式压缩、解压缩带密码的文件

压缩文件时可以添加密码,解压缩文件时也可以添加密码。

如果要使用密码,需要在命令行模式下添加参数”-p “。

以下是用winrar命令行模式压缩文件+密码,解压缩带密码的文件的vba代码:





       

发表评论