你怎样才能使用Windows的内置function压缩或解压缩脚本?

在Windows中,你可以zip一些文件

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

双击.zip文件并unzip文件。

有没有办法从脚本(.bat文件)应用这些能力, 而不需要安装任何第三方

================================================== =
这个问题被编辑,以符合网站的规则, 请重新打开

早在2013年,这是不可能的。 MS没有为此提供可执行文件。

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

从Windows 8开始,.Net Framework 4.5默认安装,可以使用System.IO.Compression.ZipArchive和PowerShell,一个可以编写脚本来实现这一点,请参阅https://stackoverflow.com/a/26843122/71312

要扩展Steven Penny的PowerShell解决scheme,可以通过调用powershell.exe将它合并到batch file中,如下所示:

 powershell.exe -nologo -noprofile -command "& { Add-Type -A 'System.IO.Compression.FileSystem'; [IO.Compression.ZipFile]::ExtractToDirectory('foo.zip', 'bar'); }" 

正如Ivan Shilo所说,这不适用于PowerShell 2,它需要PowerShell 3或更高版本以及.NET Framework 4。

PowerShell可以做到这一点

 Add-Type -A System.IO.Compression.FileSystem [IO.Compression.ZipFile]::CreateFromDirectory('foo', 'foo.zip') [IO.Compression.ZipFile]::ExtractToDirectory('foo.zip', 'bar') 

如果您安装了Java ,则可以使用jar命令将其压缩为ZIP存档:

 jar -cMf targetArchive.zip sourceDirectory 

c =创build一个新的档案文件。

M =指定不应将清单文件添加到存档。

f =表示目标文件名称。

这不完全是一个zip文件,但使用Windows工具压缩文件的唯一方法是:

 makecab <source> <dest>.cab 

解压:

 expand <source>.cab <dest> 

高级示例(来自ss64.com):

 Create a self extracting archive containing movie.mov: C:\> makecab movie.mov "temp.cab" C:\> copy /b "%windir%\system32\extrac32.exe"+"temp.cab" "movie.exe" C:\> del /q /f "temp.cab" 

更多信息: makecab , 扩展 , makecab高级用途

PowerShell 5.0

Microsoft.PowerShell.Archive你可以使用:

  • Compress-Archive
  • Expand-Archive

例如:

  • 从整个Test文件夹创buildresult.zip

     Compress-Archive -Path C:\Test -DestinationPath C:\result 
  • 在指定的Test文件夹中提取result.zip的内容:

     Expand-Archive -Path result.zip -DestinationPath C:\Test 

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

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

我也发现了我的电脑上碰到的compress.exe。 它在大多数Windows机器上不是本地的,并且是2003资源工具包的一部分。 它确实做了一个压缩的文件,但它实际上更类似于Windows安装盘(具有下划线作为文件扩展名或文件名的最后一个字符)中的文件。 extract.exe命令提取这些文件。

然而,如果可以通过GUI本地完成,那么可能有办法通过批处理,.vbs或命令行中的其他types的脚本来完成。 由于Windows有'发送到'选项来创build一个zip文件,我知道必须有一种方法来通过命令行,我发现一些选项。

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

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

我testing了一个包含多个嵌套文件和文件夹的目录,它的工作完美。 只需按照命令行的格式。

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

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

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

使用7-Zip:

Zip :你有一个文件夹foo ,并且想把它压缩到myzip.zip

“C:\ Program Files \ 7-Zip \ 7z.exe”a -r myzip.zip -w foo -mem = AES256

解压缩 :您想将其解压缩( myzip.zip )到当前目录( ./

“C:\ Program Files \ 7-Zip \ 7z.exe”x myzip.zip -o./ -y -r

开源是你的朋友:-)

这里是UNZIP: http : //gnuwin32.sourceforge.net/packages/unzip.htm

还有一个ZIP命令: http : //gnuwin32.sourceforge.net/packages/zip.htm

二进制文件下载就足够了。

你可以使用包装在BAT文件中的vbsscript …这是我的代码在相对path上工作…

无需任何第三方工具或依赖..只需设置源和目的地。

文件名:zipping.bat

 echo Set fso = CreateObject("Scripting.FileSystemObject") > _zipup.vbs echo InputFolder = fso.GetAbsolutePathName(WScript.Arguments.Item(0)) >> _zipup.vbs echo ZipFile = fso.GetAbsolutePathName(WScript.Arguments.Item(1)) >> _zipup.vbs 'Create empty ZIP file. echo CreateObject("Scripting.FileSystemObject").CreateTextFile(ZipFile, True).Write "PK" & Chr(5) & Chr(6) & String(18, vbNullChar) >> _zipup.vbs echo Set objShell = CreateObject("Shell.Application") >> _zipup.vbs echo Set source = objShell.NameSpace(InputFolder).Items >> _zipup.vbs echo objShell.NameSpace(ZipFile).CopyHere(source) >> _zipup.vbs echo 'Keep script waiting until compression is done echo Do Until objShell.NameSpace( ZipFile ).Items.Count = objShell.NameSpace( InputFolder ).Items.Count >> _zipup.vbs echo WScript.Sleep 200 >> _zipup.vbs echo Loop >> _zipup.vbs CScript _zipup.vbs %SOURCEDIR% %OUTPUTZIP% del _zipup.vbs 

如果您需要将其作为脚本的一部分,那么最好的方法就是使用Java。 假设bin目录在您的path中(在大多数情况下),您可以使用命令行:

 jar xf test.zip 

如果Java不是直接传递给你的参考:

 C:\Java\jdk1.6.0_03\bin>jar xf test.zip 

你说你没有第三方软件就可以做到这一点。 我不确定您是否将.NET视为“第三方”软件。

但是你可以在.NET中创build你自己的命令行工具。 它不应该需要超过几行代码。

https://msdn.microsoft.com/en-us/library/system.io.compression.zipfile(v=vs.110).aspx

您可以使用Expand命令解压缩压缩或原生压缩的Windows文件,例如

 expand MyFile.zip myFile 

压缩文件:

 C:\> zip -9 -m -o file.dat.zip file.dat 
  • -9最大压缩
  • -m在成功压缩后删除原始文件
  • -o将zip文件的修改date设置为与原始文件相同
  • 太糟糕了,必须给它所需的压缩文件的名称,而不是它只是添加.zip扩展名的文件来压缩