如何使用命令行压缩文件?

125

我想使用批处理命令(Windows XP批处理文件)压缩一个目录。

例如,如果我想解压缩一个文件,我可以使用jar -xf file.zip(java)批处理命令。

同样地,我想要一个命令行批处理来压缩一个目录。


1
你的问题不够清晰。为什么需要使用命令行?你想在什么情况下使用命令行 - 因为你在标记此问题时同时加了Java和Flex的标签? - splash
在Windows上?Linux上?OSX上? - Jo Smo
1
由于OP提到了“BAT文件”,我认为这是Windows系统。 - Sreenikethan I
2
是的,我们可以使用cmd压缩和解压文件/文件夹。请参见下面的命令,您只需在cmd中复制并粘贴更改目录和文件名即可。压缩文件: powershell Compress-Archive D:\Build\FolderName D:\Build\FolderName.zip解压文件: powershell expand-archive D:\Build\FileName.zip D:\deployments\FileName - Shrikant Verma
8个回答

222

如果您正在使用Ubuntu Linux:

  1. 安装zip

  2. sudo apt-get install zip
    
  3. 将您的文件夹压缩:

    zip -r {filename.zip} {foldername}
    

如果您正在使用Microsoft Windows:

尽管Windows自Windows 98的Plus!套件以来原生支持Zip文件,但它并没有附带命令行zip程序。

我建议使用开源的7-Zip实用程序,它包括一个命令行可执行文件,并支持许多不同的存档文件类型,特别是其自己的*.7z格式,它提供比传统(PKZIP)*.zip文件更优异的压缩比:

  1. 7-Zip主页下载7-Zip

  2. 7z.exe的路径添加到您的PATH环境变量中。 请参阅此QA: 如何在Windows中设置路径和环境变量

  3. 打开一个新的命令提示符窗口并使用此命令创建PKZIP *.zip文件:

7z a -tzip {yourfile.zip} {yourfolder}

跨平台Java:

如果您已经安装了Java JDK,则可以使用jar实用程序创建Zip文件,因为*.jar文件本质上只是重命名的*.zip(PKZIP)文件:

jar -cfM {yourfile.zip} {yourfolder}

解释: * -c 压缩文件 * -f 指定文件名 * -M 不包括MANIFEST文件


1
我正在使用Windows XP,你能给些建议吗? - PS Kumar
2
在使用Windows XP时:1.安装一个压缩工具,我建议使用7zip,它是免费的并支持多种类型,您可以从7zip主页下载;2.将7-zip的安装路径添加到您的PATH中。详见如何在Windows中设置路径和环境变量;3.执行以下命令:7z a -tzip yourfile.zip yourfolder @user1990589,如果您需要更多示例,请查看此链接 - Bigxiang
1
@user1990589 我改进了我的答案,提供了一种 XP 的方式和一种 Java 的方式,希望能对你有所帮助。 - Bigxiang
1
如果您使用的是Windows操作系统,您也可以安装MinGW,它可以让您安装zip - Edwin Pratt
直接调用 .exe 文件而不添加路径:C:\Program Files\7-Zip\7z.exe a -tzip {yourfile.zip} {yourfolder} - Spherical Cowboy

48

是的,我们可以使用cmd压缩和解压文件/文件夹。查看下面的命令,您可以在cmd中复制并粘贴,并更改目录和文件名。

压缩文件
powershell Compress-Archive D:\Build\FolderName D:\Build\FolderName.zip

解压文件
powershell expand-archive D:\Build\FileName.zip D:\deployments\FileName


3
如果您尝试压缩多个项目,则此语法无效。该指令的微软参考链接为:https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.archive/compress-archive - Dinsdale
3
Compress-Archive 依赖于 Microsoft .NET Framework API,仅在文件小于2 GB时工作... 参考 --> https://dev59.com/Uprga4cB1Zd3GeqPtuQB#50418594 - bunjeeb
1
非常感谢,指令很棒。 - Joel
2
提及一下,Compress-Archive 仅适用于 PowerShell V5 及以上版本。 - Gibado
1
对于Windows平台,这应该是最优的答案。 - bobt
显示剩余2条评论

21

您可以使用以下命令:

zip -r nameoffile.zip directory
希望这有所帮助。

我正在使用Windows XP。命令“zip”未被识别为内部或外部命令。你能在Windows XP中给我建议吗? - PS Kumar
这不会是平台无关的。我认为 OP 想使用 Java 来完成它。 - Manish

12

自2018年起,Windows 10自带tar命令,并且默认支持zip压缩文件格式。无需安装任何额外软件或包。

tar.exe acvf yourfile.zip yourfolder

PowerShell中的Compress-Archive不支持2GB以上的文件。


1
这对我非常有效。请注意,Windows实际上提供了bsdtar。可以在此处找到所有命令行选项的列表:https://www.freebsd.org/cgi/man.cgi?query=bsdtar&sektion=1&format=html 答案中的选项acvf表示: -a - 自动检测扩展名为.zip的存档类型 -c - 创建新的存档 -v - 冗长模式 -f - 下一个命令行参数是应创建的存档名称 - Beat Nideröst
这真的是一个.ZIP文件吗?还是一个压缩的tar存档?只有实验才能最终揭示答案... - undefined

5

需要在系统中安装zip包。

压缩文件

zip <filename.zip> <file>

示例:

zip doc.zip doc.txt 

解压文件

unzip <filename.zip>

例子:

unzip mydata.zip

2
我认为这在Linux上可以运行,但在Windows上无法运行。当然,原帖并没有提到他使用的操作系统是哪个。 - Frecklefoot
这个回答表达得不够清晰。"The zip Package should be installed in system" 是指你需要先安装它呢?还是说你应该期望它已经被安装了呢? - undefined

1
在最初的问题时,正确答案应该是使用通过命令行的Windows JScript或VBS,这种方法可以使用ADODB.Stream.writeFile(destination,ZIP_DATA)构建高达2 GB的zip文件。

enter image description here

对于在Windows 10中仍然有效的现代化副本,请参见https://github.com/npocmaka/batch.scripts/blob/master/hybrids/jscript/zipjs.bat

用于新版Windows 10上的zip处理的CMD工具,因此我推测它被继承到Win 11,但在Windows 8或更早版本中,它不是"原生"命令行,因为该系统内置的dll功能是作为资源管理器的一部分存在的,至少从XP开始

请参阅Tar --help

要列出使用Tar -tf file.zip

要提取使用Tar -m -xf file.zip

所以OP想要保存为zip

要压缩使用Tar -a -cf new.zip files

还有其他选项可用,但我认为要处理"嵌套"存档文件需要逐级解析。

总体而言,最好使用像7-Zip这样的通用压缩工具,但其他在Windows上也很受欢迎,尤其是Windows各个变体的鼻祖WinZip(c)1991 https://www.winzip.com/en/download/winzip/ ,它还有专门版本,如安全的WinZip Courier和WinZip PDF!


0

通过运行 PowerShell 从 cmd 压缩文件夹:

powershell "Add-Type -A System.IO.Compression.FileSystem; [IO.Compression.ZipFile]::CreateFromDirectory('folder','archive.zip')"

解压缩:
powershell "Add-Type -A System.IO.Compression.FileSystem; [IO.Compression.ZipFile]::ExtractToDirectory('archive.zip','folder')"

-2

这里列出的所有方法都对我无效。这应该是一件非常简单的事情。我在这里发布我的答案,因为每次我搜索“如何在cmd窗口上压缩”时,我都会进入这个页面,但没有解决方案适用于我。

所以这是一个适用于我的方法:zip output_file input_files,如下面的截图所示。

enter image description here


1
你没有提到其他命令的问题,但是几个人给出的建议基本上和你展示的一样。我唯一看到的区别是你省略了-r并且没有在文件名后加上可选的.zip扩展名。 - mwfearnley

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接