Windows下执行`tar -xvf file.tar.bz2`解压bzip2文件

目标,在Rust程序里解压.tar.bz2压缩包。

折腾了大半天,走了很多弯路。一是经验不足,没有及时想到合适的Shell,二是我的应用场景是在Windows系统下调用Linux命令行,难度较大。

一开始就想到std::process::Command,要执行的是一个SHELL进程,参数有两个,参数1是"/C"或"-c",参数2是命令行。此信息Command的docs里有明示,还有例子。只是我此前理解不深入,把tar当作进程、把-xvf等当作tar的参数,一开始起点就偏了。把tar当进程勉强还行(Windows10系统目录里有tar.exe),可要解压的是.tar.bz2文件,tar还得另外调用bzip2进程,后面直接就报莫名其妙的错误。后来我把Git安装目录里的usr/bin/sh.exe当作SHELL做了很多尝试都失败了(其实距离git-bash.exe仅有一步之遥,偏偏当时想不到),最大的问题是它大概率会在解压过程中卡死,成功率极低,原因不明。

在用Command没搞定的情况下,我又尝试了多种其它方法:

  • 使用tar库能解压.tar不能解压.tar.bz2文件;
  • 使用zip库解压.tar.bz2文件时报文件头错误;
  • 使用bzip2库只能处理数据流不涉及文件操作;
  • 用7z.exe解压它先解出.tar不能一步到位。

最后又回到Command执行SHELL的路子,引入git-bash.exe才最终搞定。

  • 总结1:Linux SHELL的参数1为"-c&#
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值