windows 7z命令行压缩

本文介绍了如何在Windows命令行使用7-zip进行文件夹压缩,并排除特定文件和文件夹。同时,讨论了在Linux服务器上遇到的ZIP文件重叠组件错误以及解决方案,包括尝试在Windows重新压缩为.tar.gz格式进行解压。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

windows 命令行用 7z[1] 压缩一个文件夹,并排除其中一些文件和文件夹,参考 [2]。

  • a:压缩的命令
  • -r:递归,可能是压缩文件夹时用?但其实我试过没加这个参数,也能正常把文件夹内所有文件加进来
  • -x!-xr!:排除一些文件,不加进最终压缩包里,可以多次使用。同样,那个 r 可能是为文件夹设置的?但不加好像也行…

如果要压缩的文件夹内包含一些软链接[3],也会把东西 copy 一份进去。

Example

一个要压缩的文件夹:

104/
|- nuswide-tc21.100pc.500pc/
|  |- avgpix.nuswide-tc21.100pc.500pc.npy
|  |- idx_labeled.npy
|  |- idx_ret.npy
|  |- idx_test.npy
|  `- idx_unlabeled.npy
`- nuswide-tc21.100pc.500pc.meta/
   |- idx_labeled.npy
   |- idx_ret.npy
   |- idx_test.npy
   `- idx_unlabeled.npy

要把它压缩成一个 .zip 文件,并把

  • 104/nuswide-tc21.100pc.500pc/avgpix.nuswide-tc21.100pc.500pc.npy
  • 104/nuswide-tc21.100pc.500pc/idx_labeled.npy
  • 104/nuswide-tc21.100pc.500pc.meta/

三者排除掉,命令:

  • 要把 7-zip 的安装目录加进 PATH
@7z a -tzip -r test.zip ^
	104/ ^
	-x!104/nuswide-tc21.100pc.500pc/avgpix.nuswide-tc21.100pc.500pc.npy ^
	-x!104/nuswide-tc21.100pc.500pc/idx_labeled.npy ^
	-xr!104/nuswide-tc21.100pc.500pc.meta

.tar.gz

在 linux 服务器用 unzip 解压 [4] 的其中一份数据 PnpAda_release_data.zip 时,报错:

error: invalid zip file with overlapped components (possible zip bomb)
 To unzip the file anyway, rerun the command with UNZIP_DISABLE_ZIPBOMB_DETECTION=TRUE environmnent variable

而在 windows 解压无报错。考虑在 windows 重新压缩成 .tar.gz 格式,传上服务器,再解压。windows 创建 .tar.gz 压缩文件参考 [6-8],有两种方案:

  1. 用 7-zip:7z a -ttar -so -an PnpAda_release_data | 7z a -si PnpAda_release_data.tar.gz。(我没有 7za.exe,只有 7z.exe,也能执行
  2. [6] 中一条 2020 年的评论说 windows 支持 tar 命令,可同在 linux 一样用 tar -zcvf PnpAda_release_data.tar.gz PnpAda_release_data 压缩。未测试,但在 windows 10 敲 tar 确实有此命令。

References

  1. 7-zip
  2. 7z 常用压缩与解压缩命令
  3. windows软链接
  4. Command-line Guide for Linux, Mac & Windows
  5. Sunxy11/ADR
  6. How do I use 7-Zip CLI for Windows to create .tar.gz archives?
  7. How to create tar file with 7zip
  8. How to Create tar.gz Archive File in Windows?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值