在Windows中,你可以压缩一些文件
右键单击→发送到→压缩(压缩)文件夹
双击.zip文件解压缩并解压缩文件。
是否有一种方法可以从脚本(.bat文件)应用这些功能,而不需要安装任何第三方软件?
在Windows中,你可以压缩一些文件
右键单击→发送到→压缩(压缩)文件夹
双击.zip文件解压缩并解压缩文件。
是否有一种方法可以从脚本(.bat文件)应用这些功能,而不需要安装任何第三方软件?
当前回答
加上@Jason Duffett的回答及其注释,这里有一个脚本,从用户那里获得输入和输出(分别是文件名和目录名):
@echo off
set input=%1
set output=%2
powershell.exe "Add-Type -A 'System.IO.Compression.FileSystem'; [IO.Compression.ZipFile]::ExtractToDirectory('%input%', '%output%');"
用法:
unzip.bat path\to\file.zip path\to\output\directory
其他回答
PowerShell 5.0
从Microsoft.PowerShell.Archive可以使用:
Compress-Archive Expand-Archive
例如:
从整个Test文件夹中创建result.zip: 压缩文件路径C:\Test -DestinationPath C:\result 在指定的Test文件夹中提取result.zip的内容: 扩展-归档-路径result.zip -目的地路径C:\Test .zip
在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
你可以在BAT文件中使用VBScript脚本。这段代码在相对PATH上工作。
不需要任何第三方工具或依赖项。只需设置SOURCEDIR和OUTPUTZIP。
文件名:ZipUp.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
示例使用
SET SOURCEDIR=C:\Some\Path
SET OUTPUTZIP=C:\Archive.zip
CALL ZipUp
或者,您可以通过替换CScript _zip行来参数化该文件。使用CScript _zip . vbs %SOURCEDIR% %OUTPUTZIP%vbs %1 %2,在这种情况下,通过调用CALL ZipUp C:\Source\Dir C:\Archive.zip可以更容易地调用它。
更新的windows版本包括tar.exe。 Tar.exe可用于CMD或Windows批处理文件中。
//Compress a folder:
tar -caf aa.zip c:\aa
如果您需要将此作为脚本的一部分,那么最好的方法是使用Java。假设bin目录在你的路径中(在大多数情况下),你可以使用命令行:
jar xf test.zip
如果Java不在你的路径上,直接引用它:
C:\Java\jdk1.6.0_03\bin>jar xf test.zip