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

creating batch script to unzip a file without additional zip tools

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


尝试这个:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@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文件执行解压缩,从而为每次使用创建一个文件夹:

1
2
3
4
5
6
7
@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"


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

1
powershell Expand-Archive your.zip -DestinationPath your_destination


这是使用PowerShell的快速??简单的解决方案:

1
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); }"

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


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

要解压缩文件,您可以使用以下脚本:

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

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