通过命令行使用bandizip压缩与解压

用程序写个支持解压多种格式的解压工具,不是那么容易,不过有个工具非常好用。Bandizip 是一个强大的多功能压缩文件管理工具,可提供高速的解压缩速度和其他各种实用功能。当然也可以用命令行去调用参数去压缩和解压。

比如说,如果有个密码集,可以去不断的尝试解压,这就挺好用的。

下载bandizip后, 此软件默认设置了环境变量, 可以直接使用bandizip命令。



命令行参数

以下都以windows进行举例

Bandizip有两个可执行程序,一般来说bz.exe会比较好用,因为它是专门是用于控制台里使用的,所以有更多的适配参数可以调用。

  1. Bandizip (Bandizip.exe)
Bandizip.exe <archive> 

Bandizip.exe <command> [<switches>...] <archive> [<files>...] [<path_to_extract>]

Bandizip.exe <bcommand> [<switches>...] [<files>...]



  1. 控制台应用程序(bz.exe)
bz.exe <command> [<switches>...] <archive> [<files>...] [<path_to_extract>]



名称意义参数
<archive>档案【执行在设置中指定的操作。(通常会打开档案。)】
<command>命令a【添加文件到档案】
x【用完整路径提取文件】
t【测试档案的完整性】
d【从档案中删除文件】
c【创建新档案(或覆盖现有文件)】
cd【显示“新建档案”对话框】
rn【重命名档案内文件】
l【列出档案中的文件(仅用bz)】
<bcommand>批处理命令bc【要压缩的每个文件/文件夹名称。 若存在同名档案,则以“(档案名)(2)”格式创建档案。若未指定目标文件夹,则默认目标文件夹为原始文件或文件夹所在的路径。】
bx【将每个档案分别提取到目标文件夹中。 若未指定目标文件夹,则默认目标文件夹为每个档案所在的路径】
bt【测试每个档案的完整性】
<switches>开关-【不使用开关】
-l:<0...9>【设置压缩级别(0:存储,5:默认,9:最大)】
-r-【禁用递归(默认)】
-r【启用递归子目录】
-aoa【无需提示覆盖全部现有文件】
-aos【跳过且不覆盖已有文件】
-aou【自动重命名已提取文件(例如,name.txt→name (2).txt)】
-sfx:"stub path"【创建SFX档案并设置SFX STUB的完整路径(Bandizip c -sfx:“C:\Program Files\Bandizip\bdzsfx.x86.sfx” c:\out.exe c:\src.txt)】
-zopfli【使用Zopfil作为默认编码器(慢)】
-p:password【设置档案密码】
-o:dir【指定目标文件夹仅适用于 x 命令和批处理命令 (bc, bx, bt)】
-storeroot:yes【将根目录存储为档案的顶级文件夹】
-y【所有询问都为是,若无错误发生,则在任务完成时关闭(解)压缩窗口】
-ex:list【指定压缩时被排除在外的一列文件(-ex:hello.txt、-ex:".bak"、-ex:".bak;.tmp"、-ex:.git)】
-root:dir【指定压缩时档案中的根目录(-root:top_folder)】
-fmt:fmt【指定档案格式(zip, zipx, exe, tar, tgz, lzh, iso, 7z, gz, xz)】
-v:size【指定分卷大小(-v:1000000 -v:1440k -v:100MB …)】
-cmt:comment【设置ZIP文件注释(-cmt:Hello, -cmt:“Hello World!”)】
-cmtfile:filepath【指定用作ZIP文件注释的txt文件的路径(-cmtfile:mycomment.txt, -cmtfile:“c:\test\my comment.txt”)】
-t:NN【指定压缩时使用的 CPU 线程数(-t:10, -t:1, -t:0)】
-cp:NN【指定打开或解压文件时使用的代码页(Bandizip x -cp:932 japanese.zip),可用代码页举例(- Chinese Simplified: 936、- Chinese Traditional: 950、- Japanese: 932、- Korean: 949、- UTF-8: 65001)】
-target:auto【“使用自动解压功能将文件提取到目标文件夹。若未指定目标文件夹,则将文件提取到每个档案所在的文件夹中。“】
-target:name【“将文件提取到目标文件夹中的档案名文件夹内。若未指定目标文件夹,则将文件提取到每个档案所在文件夹中的档案名文件夹内】
-date【将当前系统时间插入文件路径】
<Switches>(仅用Bandizip)开关-email【压缩并用邮件发送】
-target:dlg【“显示一个对话框以指定目标文件夹,并将文件提取到目标文件夹中的 档案名 文件夹中。若使用 -o 指定了任何文件夹,则它是对话框的默认文件夹。“】
<switches>(仅用bz)开关-list:v【使用命令 l 时,显示文件的详细信息】
-list:s【使用命令 l 时,仅显示文件名】
-consolemode:ansi【以ANSI格式保存输出txt文件】
-consolemode:utf8【以UTF-8格式保存输出txt文件】



举例

package main

import (
	"log"
	"os/exec"
)

// 解压带密码的压缩包
func main() {
	const bandizip = `E:\Bandizip\Bandizip.exe`
	const bz = `E:\Bandizip\bz.exe`
	cmd := exec.Command(bz, `x`, `-o:D:\test\`, `-p:123456`, `D:\test.zip`)
	execErr := cmd.Run()
	if execErr != nil {
		log.Printf("[ERROR] fail to decompress file, error:%v\n", execErr)
	}
}



巨人的肩膀

从他人的工作中汲取经验来避免自己的错误重复,正如我们是站在巨人的肩膀上才能做出更好的成绩。

https://cn.bandisoft.com/bandizip/help/parameter/



VChat

一个没有哆啦A梦和静香的IT码农,不专业Gopher
在这里插入图片描述

  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值