创建批处理脚本以解压缩文件而无需其他zip工具

时间:2014-02-11 14:03:47

标签: windows batch-file

我正在尝试为Windows 7 x64创建一个.bat脚本来创建一个文件夹,将文件解压缩到该文件夹​​中,而不必使用其他插件,如7zip或解压缩。一直在搜索,似乎Windows没有内置设备允许在命令中轻松解压缩。我可以在没有附加插件的情况下解压/扩展文件吗?

5 个答案:

答案 0 :(得分:45)

试试这个:

@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"

答案 1 :(得分:6)

以下是使用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); }"

这使用Explorer的内置提取功能,还将显示典型的提取进度窗口。第二个参数16CopyHere会回答所有问题。

答案 2 :(得分:4)

如果您具有PowerShell 5.0或更高版本(已预安装Windows 10和Windows Server 2016):

powershell Expand-Archive your.zip -DestinationPath your_destination

答案 3 :(得分:2)

以下是我对Windows中内置zi / unzip(压缩/解压缩)功能的概述 - How can I compress (/ zip ) and uncompress (/ unzip ) files and folders with batch file without using any external tools?

要解压缩文件,您可以使用此script

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

答案 4 :(得分:1)

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