创build批处理脚本来解压缩文件,而无需额外的压缩工具

我正在尝试为Windows 7 x64创build一个.bat脚本来创build一个文件夹,将文件解压缩到该文件夹​​中,而不必使用额外的插件(如7zip或unzip)。 一直在search,它似乎像Windows没有内置的允许在命令中轻松解压缩。 我可以解压缩/扩展文件没有额外的插件?

尝试这个:

@echo off setlocal cd /d %~dp0 Call :UnZipFile "C:\Temp\" "c:\path\to\batch.zip" exit /b :UnZipFile <ExtractTo> <newzipfile> set vbs="%temp%\_.vbs" if exist %vbs% del /f /q %vbs% >%vbs% echo Set fso = CreateObject("Scripting.FileSystemObject") >>%vbs% echo If NOT fso.FolderExists(%1) Then >>%vbs% echo fso.CreateFolder(%1) >>%vbs% echo End If >>%vbs% echo set objShell = CreateObject("Shell.Application") >>%vbs% echo set FilesInZip=objShell.NameSpace(%2).items >>%vbs% echo objShell.NameSpace(%1).CopyHere(FilesInZip) >>%vbs% echo Set fso = Nothing >>%vbs% echo Set objShell = Nothing cscript //nologo %vbs% if exist %vbs% del /f /q %vbs% 

调整

要使其在每个zip文件上执行解压缩,为每个用途创建一个文件夹:

 @echo off setlocal cd /d %~dp0 for %%a in (*.zip) do ( Call :UnZipFile "C:\Temp\%%~na\" "c:\path\to\%%~nxa" ) exit /b 

如果您不想为每个zip创建一个文件夹, Call :UnZipFile "C:\Temp\%%~na\" "c:\path\to\%%~nxa"更改为Call :UnZipFile "C:\Temp\" "c:\path\to\%%~nxa"

这里是我关于Windows内置zi / unzip(压缩/解压缩)功能的概述 – 如何在不使用任何外部工具的情况下使用批处理文件压缩(/ zip)和解压缩(/ unzip)文件和文件夹?

要解压文件,你可以使用这个脚本 :

 zipjs.bat unzip -source C:\myDir\myZip.zip -destination C:\MyDir -keep yes -force no 

解决此问题的另一种方法是使用类似winzip的方式创建自解压可执行文件(.exe),并将其用作安装向量而不是zip文件。 同样,你可以使用NSIS来创建一个可执行的安装程序,并使用它来代替zip。

这是一个使用PowerShell的简单而快速的解决方案:

 powershell.exe -nologo -noprofile -command "& { $shell = New-Object -COM Shell.Application; $target = $shell.NameSpace('C:\extractToThisDirectory'); $zip = $shell.NameSpace('C:\extractThis.zip'); $target.CopyHere($zip.Items(), 16); }" 

这使用资源管理器的内置提取功能,也将显示典型的提取进度窗口。 CopyHere的第二个参数16回答所有问题。