在Windows中,你可以压缩一些文件

右键单击→发送到→压缩(压缩)文件夹

双击.zip文件解压缩并解压缩文件。

是否有一种方法可以从脚本(.bat文件)应用这些功能,而不需要安装任何第三方软件?


当前回答

我一直在寻找这个确切问题的答案,从我的研究来看,DiryBoy的回答似乎是准确的。

我发现compact.exe程序压缩文件,但不创建高度压缩的文件(或一组文件)。它类似于在Windows中右键单击驱动器号或分区时得到的选项。您可以选择进行清理(删除临时文件等)以及压缩文件。压缩文件仍然可以访问,但只是压缩以在空间不足的驱动器上创建空间。

我还在电脑上找到了compress.exe。它不是大多数windows机器上的本机,而是2003年资源包的一部分。它确实生成了某种压缩文件,但它实际上更类似于windows安装磁盘中的文件(文件扩展名或名称的最后一个字符是下划线)。exe命令提取这些文件。

然而,关键是,如果可以通过GUI本机完成,那么很可能有一种方法可以通过批处理、.vbs或命令行中的其他类型的脚本来完成。由于windows有“发送到”选项来创建zip文件,我知道一定有一种方法可以通过命令行来完成,我找到了一些选项。

这里有一个很好的链接,展示了如何使用windows本机命令压缩文件。

https://superuser.com/questions/110991/can-you-zip-a-file-from-the-command-prompt-using-only-windows-built-in-capabili

我用一个包含多个嵌套文件和文件夹的目录对它进行了测试,效果非常好。只需遵循命令行的格式。

还有一种通过命令行解压文件的方法,我也发现了。一种方法是打开一个资源管理器窗口,显示压缩文件的内容。其中一些也使用Java,它不一定是windows本机的,但它是如此常见,几乎看起来是这样的。

https://superuser.com/questions/149489/does-windows-7-have-unzip-at-the-command-line-installed-by-default

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

其他回答

如果你安装了Java,你可以使用jar命令压缩成ZIP文件:

jar -cMf targetArchive.zip sourceDirectory

创建一个新的归档文件。 M =指定清单文件不应添加到存档。 f =目标文件名。

在2013年,这是不可能的。微软没有为此提供任何可执行文件。

看这个链接,一些VBS的方法来做到这一点。 https://superuser.com/questions/201371/create-zip-folder-from-the-command-line-windows

从Windows 8开始,.NET Framework 4.5默认安装,有system . io . compress . ziparchive和PowerShell可用,你可以写脚本来实现这一点,见 https://stackoverflow.com/a/26843122/71312

更新的windows版本包括tar.exe。 Tar.exe可用于CMD或Windows批处理文件中。

//Compress a folder:
tar -caf aa.zip c:\aa

正如@Noam Manos所回答的,我们可以通过在.bashrc文件中使用别名来改进压缩:

别名zip=“jar -cMf”

然后命令(在bash终端中)将是

邮编目标.zip目录1 目录2

注意:你应该安装java和git bash,并在windows中进行安装。

壳。应用程序

与壳牌。应用程序可以模拟explorer.exe压缩文件和文件夹的方式 脚本名为zipjs.bat:

:: unzip content of a zip to given folder.content of the zip will be not preserved (-keep no).Destination will be not overwritten (-force no)
call zipjs.bat unzip -source C:\myDir\myZip.zip -destination C:\MyDir -keep no -force no

:: lists content of a zip file and full paths will be printed (-flat yes)
call zipjs.bat list -source C:\myZip.zip\inZipDir -flat yes

:: lists content of a zip file and the content will be list as a tree (-flat no)
call zipjs.bat list -source C:\myZip.zip -flat no

:: prints uncompressed size in bytes
zipjs.bat getSize -source C:\myZip.zip

:: zips content of folder without the folder itself
call zipjs.bat zipDirItems -source C:\myDir\ -destination C:\MyZip.zip -keep yes -force no

:: zips file or a folder (with the folder itslelf)
call zipjs.bat zipItem -source C:\myDir\myFile.txt -destination C:\MyZip.zip -keep yes -force no

:: unzips only part of the zip with given path inside
call zipjs.bat unZipItem -source C:\myDir\myZip.zip\InzipDir\InzipFile -destination C:\OtherDir -keep no -force yes
call zipjs.bat unZipItem -source C:\myDir\myZip.zip\InzipDir -destination C:\OtherDir 

:: adds content to a zip file
call zipjs.bat addToZip -source C:\some_file -destination C:\myDir\myZip.zip\InzipDir -keep no
call zipjs.bat addToZip -source  C:\some_file -destination C:\myDir\myZip.zip

MAKECAB

Makecab是windows自带的默认压缩工具。虽然它可以使用不同的压缩算法(包括zip)文件格式始终是.cab文件。通过一些扩展,它也可以在linux机器上使用。

压缩文件:

makecab file.txt "file.cab"

压缩整个文件夹需要更多的工作。这里用cabDir.bat压缩了一个目录:

call cabDir.bat ./myDir compressedDir.cab

使用expand命令解压非常简单:

EXPAND cabfile -F:* .

更巧妙的方法是使用extrac32命令创建自提取可执行文件:

copy /b "%windir%\system32\extrac32.exe"+"mycab.cab" "expandable.exe"
call expandable.exe

TAR

在windows的17063版本中,我们有tar命令:

::compress directory
tar -cvf archive.tar c:\my_dir
::extract to dir
tar -xvf archive.tar.gz -C c:\data

net工具

.net(和powershell)提供了许多压缩和解压缩文件的方法。最直接的是gzip流。脚本名为gzipjs.bat:

::zip
call gzipjs.bat -c my.file my.zip
::unzip
call gzipjs.bat -u my.zip my.file